1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

initial work on parallel logs.

This commit is contained in:
Cedric Beust 2016-08-07 17:31:50 -07:00
parent fa86f90e31
commit b5e9962d31
11 changed files with 169 additions and 29 deletions

View file

@ -9,6 +9,7 @@ import com.beust.kobalt.api.KobaltContext
import com.beust.kobalt.api.Project
import com.beust.kobalt.internal.ICompilerAction
import com.beust.kobalt.internal.JvmCompiler
import com.beust.kobalt.internal.KobaltLog
import com.beust.kobalt.misc.KFiles
import com.beust.kobalt.misc.Strings
import com.beust.kobalt.misc.log
@ -22,7 +23,8 @@ import javax.tools.JavaFileObject
import javax.tools.ToolProvider
@Singleton
class JavaCompiler @Inject constructor(val jvmCompiler: JvmCompiler) : ICompiler {
class JavaCompiler @Inject constructor(val jvmCompiler: JvmCompiler,
val kobaltLog: KobaltLog) : ICompiler {
fun compilerAction(executable: File) = object : ICompilerAction {
override fun compile(projectName: String?, info: CompilerActionInfo): TaskResult {
if (info.sourceFiles.isEmpty()) {
@ -58,7 +60,8 @@ class JavaCompiler @Inject constructor(val jvmCompiler: JvmCompiler) : ICompiler
command = "javac " + allArgs.joinToString(" ") + " " + info.sourceFiles.joinToString(" ")
log(2, "Launching\n$command")
log(1, " Java compiling " + Strings.pluralizeAll(info.sourceFiles.size, "file"))
kobaltLog.log(projectName!!, 1,
" Java compiling " + Strings.pluralizeAll(info.sourceFiles.size, "file"))
val result = task.call()
errorMessage = dc.diagnostics.joinToString("\n")
result

View file

@ -3,10 +3,7 @@ package com.beust.kobalt.plugin.kotlin
import com.beust.kobalt.KobaltException
import com.beust.kobalt.TaskResult
import com.beust.kobalt.api.*
import com.beust.kobalt.internal.ICompilerAction
import com.beust.kobalt.internal.JvmCompiler
import com.beust.kobalt.internal.KobaltSettings
import com.beust.kobalt.internal.KotlinJarFiles
import com.beust.kobalt.internal.*
import com.beust.kobalt.kotlin.ParentLastClassLoader
import com.beust.kobalt.maven.DependencyManager
import com.beust.kobalt.maven.dependency.FileDependency
@ -38,14 +35,16 @@ class KotlinCompiler @Inject constructor(
val executors: KobaltExecutors,
val settings: KobaltSettings,
val jvmCompiler: JvmCompiler,
val kotlinJarFiles: KotlinJarFiles) {
val kotlinJarFiles: KotlinJarFiles,
val kobaltLog: KobaltLog) {
val compilerAction = object: ICompilerAction {
override fun compile(projectName: String?, info: CompilerActionInfo): TaskResult {
val version = settings.kobaltCompilerVersion
if (! info.outputDir.path.endsWith("ript.jar")) {
// Don't display the message if compiling Build.kt
log(1, " Kotlin $version compiling " + Strings.pluralizeAll(info.sourceFiles.size, "file"))
kobaltLog.log(projectName!!, 1,
" Kotlin $version compiling " + Strings.pluralizeAll(info.sourceFiles.size, "file"))
}
val cp = compilerFirst(info.dependencies.map { it.jarFile.get() })
val infoDir = info.directory

View file

@ -9,6 +9,7 @@ import com.beust.kobalt.api.annotation.Task
import com.beust.kobalt.archive.*
import com.beust.kobalt.internal.IncrementalManager
import com.beust.kobalt.internal.JvmCompilerPlugin
import com.beust.kobalt.internal.KobaltLog
import com.beust.kobalt.maven.DependencyManager
import com.beust.kobalt.maven.PomGenerator
import com.beust.kobalt.misc.KFiles
@ -23,6 +24,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
val incrementalManagerFactory: IncrementalManager.IFactory,
val executors: KobaltExecutors, val jarGenerator: JarGenerator, val warGenerator: WarGenerator,
val zipGenerator: ZipGenerator, val taskContributor: TaskContributor,
val kobaltLog: KobaltLog,
val pomFactory: PomGenerator.IFactory, val configActor: ConfigActor<InstallConfig>)
: BasePlugin(), ITaskContributor, IIncrementalAssemblyContributor,
IConfigActor<InstallConfig> by configActor {
@ -73,7 +75,8 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
{ project ->
try {
packages.filter { it.project.name == project.name }.forEach { packageConfig ->
packageConfig.jars.forEach { jarGenerator.generateJar(packageConfig.project, context, it) }
packageConfig.jars.forEach { jarGenerator.generateJar(packageConfig.project, context, it,
kobaltLog) }
packageConfig.wars.forEach { warGenerator.generateWar(packageConfig.project, context, it) }
packageConfig.zips.forEach { zipGenerator.generateZip(packageConfig.project, context, it) }
if (packageConfig.generatePom) {

View file

@ -7,6 +7,7 @@ import com.beust.kobalt.api.KobaltContext
import com.beust.kobalt.api.Project
import com.beust.kobalt.archive.Archives
import com.beust.kobalt.archive.War
import com.beust.kobalt.internal.KobaltLog
import com.beust.kobalt.maven.DependencyManager
import com.beust.kobalt.misc.From
import com.beust.kobalt.misc.IncludedFile
@ -18,7 +19,7 @@ import java.io.OutputStream
import java.nio.file.Paths
import java.util.jar.JarOutputStream
class WarGenerator @Inject constructor(val dependencyManager: DependencyManager){
class WarGenerator @Inject constructor(val dependencyManager: DependencyManager, val kobaltLog: KobaltLog) {
companion object {
val WEB_INF = "WEB-INF"
@ -88,7 +89,7 @@ class WarGenerator @Inject constructor(val dependencyManager: DependencyManager)
val allFiles = findIncludedFiles(project, context, war)
val jarFactory = { os: OutputStream -> JarOutputStream(os, manifest) }
return Archives.generateArchive(project, context, war.name, ".war", allFiles,
false /* don't expand jar files */, jarFactory)
false /* don't expand jar files */, jarFactory, kobaltLog)
}
}

View file

@ -5,12 +5,13 @@ import com.beust.kobalt.api.KobaltContext
import com.beust.kobalt.api.Project
import com.beust.kobalt.archive.Archives
import com.beust.kobalt.archive.Zip
import com.beust.kobalt.internal.KobaltLog
import com.beust.kobalt.maven.DependencyManager
import com.google.inject.Inject
class ZipGenerator @Inject constructor(val dependencyManager: DependencyManager){
class ZipGenerator @Inject constructor(val dependencyManager: DependencyManager, val kobaltLog: KobaltLog) {
fun generateZip(project: Project, context: KobaltContext, zip: Zip) {
val allFiles = JarGenerator.findIncludedFiles(project.directory, zip.includedFiles, zip.excludes)
Archives.generateArchive(project, context, zip.name, ".zip", allFiles)
Archives.generateArchive(project, context, zip.name, ".zip", allFiles, kobaltLog = kobaltLog)
}
}