From 71e2852963e0f58759464855712154f0fc90e63b Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 5 Jul 2016 09:42:22 -0700 Subject: [PATCH] Clean up the dependent project API. --- .../src/main/kotlin/com/beust/kobalt/api/Project.kt | 10 ++-------- .../com/beust/kobalt/internal/JvmCompilerPlugin.kt | 7 +------ .../kotlin/com/beust/kobalt/internal/TaskManager.kt | 4 ++-- .../com/beust/kobalt/maven/DependencyManager.kt | 2 +- .../kotlin/com/beust/kobalt/maven/PomGenerator.kt | 2 +- .../com/beust/kobalt/app/remote/DependencyData.kt | 12 +----------- 6 files changed, 8 insertions(+), 29 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt index 1c3e74dc..2158927d 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/Project.kt @@ -2,7 +2,6 @@ package com.beust.kobalt.api import com.beust.kobalt.TestConfig import com.beust.kobalt.api.annotation.Directive -import com.beust.kobalt.internal.JvmCompilerPlugin import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.misc.KFiles import java.io.File @@ -22,6 +21,7 @@ open class Project( @Directive open var scm : Scm? = null, @Directive open var url: String? = null, @Directive open var licenses: List = arrayListOf(), + @Directive open var dependsOn: ArrayList = arrayListOf(), @Directive open var packageName: String? = group) : IBuildConfig, IDependencyHolder by DependencyHolder() { @@ -30,14 +30,12 @@ open class Project( } class ProjectExtra(project: Project) { - val dependsOn = arrayListOf() - var isDirty = false /** * @return true if any of the projects we depend on is dirty. */ - fun dependsOnDirtyProjects(project: Project) = project.projectExtra.dependsOn.any { it.projectExtra.isDirty } + fun dependsOnDirtyProjects(project: Project) = project.dependsOn.any { it.projectExtra.isDirty } } /** @@ -56,10 +54,6 @@ open class Project( override fun equals(other: Any?) = name == (other as Project).name override fun hashCode() = name.hashCode() - /** Can be used by plug-ins */ - val dependentProjects : List - get() = projectProperties.get(JvmCompilerPlugin.DEPENDENT_PROJECTS) as List - companion object { val DEFAULT_SOURCE_DIRECTORIES = setOf("src/main/java", "src/main/kotlin", "src/main/resources") val DEFAULT_SOURCE_DIRECTORIES_TEST = setOf("src/test/java", "src/test/kotlin", "src/test/resources") diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt index d734bd29..2352bfdc 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt @@ -34,9 +34,6 @@ open class JvmCompilerPlugin @Inject constructor( companion object { val PLUGIN_NAME = "JvmCompiler" - @ExportedProjectProperty(doc = "Projects this project depends on", type = "List") - const val DEPENDENT_PROJECTS = "dependentProjects" - @ExportedProjectProperty(doc = "Compiler args", type = "List") const val COMPILER_ARGS = "compilerArgs" @@ -208,12 +205,10 @@ open class JvmCompilerPlugin @Inject constructor( } fun addDependentProjects(project: Project, dependents: List) { - project.projectExtra.dependsOn.addAll(dependents) + project.dependsOn.addAll(dependents) with(ProjectDescription(project, dependents)) { allProjects.add(this) } - - project.projectProperties.put(DEPENDENT_PROJECTS, allProjects) } @Task(name = "doc", description = "Generate the documentation for the project", group = GROUP_DOCUMENTATION) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt index b32b0eff..90214710 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TaskManager.kt @@ -132,7 +132,7 @@ class TaskManager @Inject constructor(val args: Args, AsciiArt.logBox("Building ${project.name}") // Does the current project depend on any failed projects? - val fp = project.projectExtra.dependsOn.filter { + val fp = project.dependsOn.filter { failedProjects.contains(it.name) }.map { it.name @@ -211,7 +211,7 @@ class TaskManager @Inject constructor(val args: Args, toProcess.forEach { ti -> val project = projectMap[ti.project] if (project != null) { - val dependents = project.projectExtra.dependsOn + val dependents = project.dependsOn if (dependents.any()) { dependents.forEach { depProject -> val tiDep = TaskInfo(depProject.name, ti.taskName) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/DependencyManager.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/DependencyManager.kt index 93d4c705..b929311d 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/DependencyManager.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/DependencyManager.kt @@ -174,7 +174,7 @@ class DependencyManager @Inject constructor(val executors: KobaltExecutors, val return emptyList() } else { val result = arrayListOf() - project.projectExtra.dependsOn.forEach { p -> + project.dependsOn.forEach { p -> result.add(FileDependency(KFiles.joinDir(p.directory, p.classesDir(context)))) val otherDependencies = calculateDependencies(p, context, p.compileDependencies) result.addAll(otherDependencies) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/PomGenerator.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/PomGenerator.kt index 8bc5833b..70774d04 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/PomGenerator.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/PomGenerator.kt @@ -56,7 +56,7 @@ public class PomGenerator @Inject constructor(@Assisted val project: Project) { } // 2. Project dependencies - project.dependentProjects.filter { it.project.name == project.name }.first().dependsOn.forEach { + project.dependsOn.forEach { m.dependencies.add(org.apache.maven.model.Dependency().apply { version = it.version groupId = it.group diff --git a/src/main/kotlin/com/beust/kobalt/app/remote/DependencyData.kt b/src/main/kotlin/com/beust/kobalt/app/remote/DependencyData.kt index b709c841..77455f8a 100644 --- a/src/main/kotlin/com/beust/kobalt/app/remote/DependencyData.kt +++ b/src/main/kotlin/com/beust/kobalt/app/remote/DependencyData.kt @@ -2,9 +2,7 @@ package com.beust.kobalt.app.remote import com.beust.kobalt.Args import com.beust.kobalt.api.IClasspathDependency -import com.beust.kobalt.api.ProjectDescription import com.beust.kobalt.app.BuildFileCompiler -import com.beust.kobalt.internal.JvmCompilerPlugin import com.beust.kobalt.internal.PluginInfo import com.beust.kobalt.internal.TaskManager import com.beust.kobalt.internal.build.BuildFile @@ -55,15 +53,7 @@ class DependencyData @Inject constructor(val executors: KobaltExecutors, val dep allDeps(project.compileProvidedDependencies).map { toDependencyData(it, "compile") } val testDependencies = allDeps(project.testDependencies).map { toDependencyData(it, "testCompile") } - val pd = project.projectProperties.get(JvmCompilerPlugin.DEPENDENT_PROJECTS) - val dependentProjects = if (pd != null) { - @Suppress("UNCHECKED_CAST") - (pd as List).filter { it.project.name == project.name }.flatMap { - it.dependsOn.map { it.name } - } - } else { - emptyList() - } + val dependentProjects = project.dependsOn.map { it.name } // Separate resource from source directories val sources = project.sourceDirectories.partition { KFiles.isResource(it) }