mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-27 08:38:13 -07:00
Introducing IIncrementalAssemblyContributor.
This commit is contained in:
parent
b3aab95852
commit
9218a8c7a6
3 changed files with 48 additions and 1 deletions
|
@ -0,0 +1,12 @@
|
||||||
|
package com.beust.kobalt.api
|
||||||
|
|
||||||
|
import com.beust.kobalt.IncrementalTaskInfo
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plug-ins that will be invoked during the "assemble" task and wish to return an incremental task instead
|
||||||
|
* of a regular one.
|
||||||
|
*/
|
||||||
|
interface IIncrementalAssemblyContributor {
|
||||||
|
fun assemble(project: Project, context: KobaltContext) : IncrementalTaskInfo
|
||||||
|
}
|
||||||
|
|
|
@ -74,6 +74,7 @@ class PluginInfo(val xml: KobaltPluginXml, val classLoader: ClassLoader?) {
|
||||||
val buildConfigFieldContributors = arrayListOf<IBuildConfigFieldContributor>()
|
val buildConfigFieldContributors = arrayListOf<IBuildConfigFieldContributor>()
|
||||||
val taskContributors = arrayListOf<ITaskContributor>()
|
val taskContributors = arrayListOf<ITaskContributor>()
|
||||||
val assemblyContributors = arrayListOf<IAssemblyContributor>()
|
val assemblyContributors = arrayListOf<IAssemblyContributor>()
|
||||||
|
val incrementalAssemblyContributors = arrayListOf<IIncrementalAssemblyContributor>()
|
||||||
|
|
||||||
// Not documented yet
|
// Not documented yet
|
||||||
val buildConfigContributors = arrayListOf<IBuildConfigContributor>()
|
val buildConfigContributors = arrayListOf<IBuildConfigContributor>()
|
||||||
|
@ -160,6 +161,7 @@ class PluginInfo(val xml: KobaltPluginXml, val classLoader: ClassLoader?) {
|
||||||
if (this is ITestSourceDirectoryContributor) testSourceDirContributors.add(this)
|
if (this is ITestSourceDirectoryContributor) testSourceDirContributors.add(this)
|
||||||
if (this is IBuildConfigContributor) buildConfigContributors.add(this)
|
if (this is IBuildConfigContributor) buildConfigContributors.add(this)
|
||||||
if (this is IAssemblyContributor) assemblyContributors.add(this)
|
if (this is IAssemblyContributor) assemblyContributors.add(this)
|
||||||
|
if (this is IIncrementalAssemblyContributor) incrementalAssemblyContributors.add(this)
|
||||||
|
|
||||||
// Not documented yet
|
// Not documented yet
|
||||||
}
|
}
|
||||||
|
@ -193,6 +195,7 @@ class PluginInfo(val xml: KobaltPluginXml, val classLoader: ClassLoader?) {
|
||||||
mavenIdInterceptors.addAll(pluginInfo.mavenIdInterceptors)
|
mavenIdInterceptors.addAll(pluginInfo.mavenIdInterceptors)
|
||||||
buildConfigContributors.addAll(pluginInfo.buildConfigContributors)
|
buildConfigContributors.addAll(pluginInfo.buildConfigContributors)
|
||||||
assemblyContributors.addAll(pluginInfo.assemblyContributors)
|
assemblyContributors.addAll(pluginInfo.assemblyContributors)
|
||||||
|
incrementalAssemblyContributors.addAll(pluginInfo.incrementalAssemblyContributors)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import com.beust.kobalt.api.annotation.ExportedProjectProperty
|
||||||
import com.beust.kobalt.api.annotation.Task
|
import com.beust.kobalt.api.annotation.Task
|
||||||
import com.beust.kobalt.archive.*
|
import com.beust.kobalt.archive.*
|
||||||
import com.beust.kobalt.glob
|
import com.beust.kobalt.glob
|
||||||
|
import com.beust.kobalt.internal.IncrementalManager
|
||||||
import com.beust.kobalt.internal.JvmCompilerPlugin
|
import com.beust.kobalt.internal.JvmCompilerPlugin
|
||||||
import com.beust.kobalt.maven.DependencyManager
|
import com.beust.kobalt.maven.DependencyManager
|
||||||
import com.beust.kobalt.maven.PomGenerator
|
import com.beust.kobalt.maven.PomGenerator
|
||||||
|
@ -21,10 +22,11 @@ import javax.inject.Singleton
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
class PackagingPlugin @Inject constructor(val dependencyManager : DependencyManager,
|
class PackagingPlugin @Inject constructor(val dependencyManager : DependencyManager,
|
||||||
|
val incrementalManager: IncrementalManager,
|
||||||
val executors: KobaltExecutors, val jarGenerator: JarGenerator, val warGenerator: WarGenerator,
|
val executors: KobaltExecutors, val jarGenerator: JarGenerator, val warGenerator: WarGenerator,
|
||||||
val zipGenerator: ZipGenerator, val taskContributor: TaskContributor,
|
val zipGenerator: ZipGenerator, val taskContributor: TaskContributor,
|
||||||
val pomFactory: PomGenerator.IFactory, val configActor: ConfigActor<InstallConfig>)
|
val pomFactory: PomGenerator.IFactory, val configActor: ConfigActor<InstallConfig>)
|
||||||
: BasePlugin(), IConfigActor<InstallConfig> by configActor, ITaskContributor, IAssemblyContributor {
|
: BasePlugin(), ITaskContributor, IAssemblyContributor, IConfigActor<InstallConfig> by configActor {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val PLUGIN_NAME = "Packaging"
|
const val PLUGIN_NAME = "Packaging"
|
||||||
|
@ -69,9 +71,39 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun doAssemble(project: Project, context: KobaltContext) : TaskResult {
|
||||||
|
try {
|
||||||
|
project.projectProperties.put(PACKAGES, packages)
|
||||||
|
packages.filter { it.project.name == project.name }.forEach { pkg ->
|
||||||
|
pkg.jars.forEach { jarGenerator.generateJar(pkg.project, context, it) }
|
||||||
|
pkg.wars.forEach { warGenerator.generateWar(pkg.project, context, it) }
|
||||||
|
pkg.zips.forEach { zipGenerator.generateZip(pkg.project, context, it) }
|
||||||
|
if (pkg.generatePom) {
|
||||||
|
pomFactory.create(project).generate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TaskResult()
|
||||||
|
} catch(ex: Exception) {
|
||||||
|
throw KobaltException(ex)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Task(name = TASK_ASSEMBLE, description = "Package the artifacts",
|
@Task(name = TASK_ASSEMBLE, description = "Package the artifacts",
|
||||||
runAfter = arrayOf(JvmCompilerPlugin.TASK_COMPILE))
|
runAfter = arrayOf(JvmCompilerPlugin.TASK_COMPILE))
|
||||||
fun doTaskAssemble(project: Project) : TaskResult {
|
fun doTaskAssemble(project: Project) : TaskResult {
|
||||||
|
// Incremental assembly contributors
|
||||||
|
context.pluginInfo.incrementalAssemblyContributors.forEach {
|
||||||
|
val taskInfo = it.assemble(project, context)
|
||||||
|
val closure = incrementalManager.toIncrementalTaskClosure(TASK_ASSEMBLE, { p: Project -> taskInfo },
|
||||||
|
context.variant)
|
||||||
|
val thisResult = closure.invoke(project)
|
||||||
|
if (! thisResult.success) {
|
||||||
|
// Abort at the first failure
|
||||||
|
return thisResult
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Regular assembly contributors
|
||||||
context.pluginInfo.assemblyContributors.forEach {
|
context.pluginInfo.assemblyContributors.forEach {
|
||||||
val thisResult = it.assemble(project, context)
|
val thisResult = it.assemble(project, context)
|
||||||
if (! thisResult.success) {
|
if (! thisResult.success) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue