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

Clean up the dependent project API.

This commit is contained in:
Cedric Beust 2016-07-05 09:42:22 -07:00
parent df7f3a70ed
commit 71e2852963
6 changed files with 8 additions and 29 deletions

View file

@ -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<License> = arrayListOf<License>(),
@Directive open var dependsOn: ArrayList<Project> = arrayListOf<Project>(),
@Directive open var packageName: String? = group)
: IBuildConfig, IDependencyHolder by DependencyHolder() {
@ -30,14 +30,12 @@ open class Project(
}
class ProjectExtra(project: Project) {
val dependsOn = arrayListOf<Project>()
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<ProjectDescription>
get() = projectProperties.get(JvmCompilerPlugin.DEPENDENT_PROJECTS) as List<ProjectDescription>
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")

View file

@ -34,9 +34,6 @@ open class JvmCompilerPlugin @Inject constructor(
companion object {
val PLUGIN_NAME = "JvmCompiler"
@ExportedProjectProperty(doc = "Projects this project depends on", type = "List<ProjectDescription>")
const val DEPENDENT_PROJECTS = "dependentProjects"
@ExportedProjectProperty(doc = "Compiler args", type = "List<String>")
const val COMPILER_ARGS = "compilerArgs"
@ -208,12 +205,10 @@ open class JvmCompilerPlugin @Inject constructor(
}
fun addDependentProjects(project: Project, dependents: List<Project>) {
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)

View file

@ -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)

View file

@ -174,7 +174,7 @@ class DependencyManager @Inject constructor(val executors: KobaltExecutors, val
return emptyList()
} else {
val result = arrayListOf<IClasspathDependency>()
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)

View file

@ -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