From 5f8021334a5fefe8c542e6593f3db1e65cecf98d Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Fri, 7 Apr 2017 19:37:48 -0700 Subject: [PATCH] Beginning implementation of compileOnly. --- .../main/kotlin/com/beust/kobalt/api/DependencyHolder.kt | 4 +++- .../src/main/kotlin/com/beust/kobalt/api/Project.kt | 7 ++++++- .../main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt | 7 ++++++- .../kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt | 2 +- .../kotlin/com/beust/kobalt/maven/DependencyManager.kt | 3 +++ .../src/main/kotlin/com/beust/kobalt/maven/aether/Scope.kt | 1 + 6 files changed, 20 insertions(+), 4 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/DependencyHolder.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/DependencyHolder.kt index a561cd9f..e1195ca3 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/DependencyHolder.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/DependencyHolder.kt @@ -13,6 +13,7 @@ interface IDependencyHolder { val compileDependencies : ArrayList val optionalDependencies : ArrayList val compileProvidedDependencies : ArrayList + val compileOnlyDependencies : ArrayList val compileRuntimeDependencies : ArrayList val excludedDependencies : ArrayList val nativeDependencies : ArrayList @@ -29,6 +30,7 @@ open class DependencyHolder : IDependencyHolder { override val compileDependencies : ArrayList = arrayListOf() override val optionalDependencies : ArrayList = arrayListOf() override val compileProvidedDependencies : ArrayList = arrayListOf() + override val compileOnlyDependencies : ArrayList = arrayListOf() override val compileRuntimeDependencies : ArrayList = arrayListOf() override val excludedDependencies : ArrayList = arrayListOf() override val nativeDependencies : ArrayList = arrayListOf() @@ -37,7 +39,7 @@ open class DependencyHolder : IDependencyHolder { override fun dependencies(init: Dependencies.() -> Unit) : Dependencies { dependencies = Dependencies(project, compileDependencies, optionalDependencies, compileProvidedDependencies, - compileRuntimeDependencies, excludedDependencies, nativeDependencies) + compileOnlyDependencies, compileRuntimeDependencies, excludedDependencies, nativeDependencies) dependencies!!.init() return dependencies!! } 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 e10b7939..578a5e18 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 @@ -91,7 +91,8 @@ open class Project( @Directive fun dependenciesTest(init: Dependencies.() -> Unit) : Dependencies { dependencies = Dependencies(this, testDependencies, arrayListOf(), - testProvidedDependencies, compileRuntimeDependencies, excludedDependencies, nativeDependencies) + testProvidedDependencies, compileOnlyDependencies, compileRuntimeDependencies, + excludedDependencies, nativeDependencies) dependencies!!.init() return dependencies!! } @@ -154,6 +155,7 @@ class Dependencies(val project: Project, val dependencies: ArrayList, val optionalDependencies: ArrayList, val providedDependencies: ArrayList, + val compileOnlyDependencies: ArrayList, val runtimeDependencies: ArrayList, val excludedDependencies: ArrayList, val nativeDependencies: ArrayList) { @@ -244,6 +246,9 @@ class Dependencies(val project: Project, addToDependencies(project, dependencies, arrayOf(dep), excludeConfig = excludeConfig) } + @Directive + fun compileOnly(vararg dep: String) = addToDependencies(project, compileOnlyDependencies, dep) + @Directive fun compileOptional(vararg dep: String) { addToDependencies(project, optionalDependencies, dep, optional = true) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt index e84b3de8..758a10e9 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/CompilerUtils.kt @@ -70,7 +70,12 @@ class CompilerUtils @Inject constructor(val files: KFiles, val dependencyManager copyResources(project, context, SourceSet.of(isTest)) val fullClasspath = dependencyManager.calculateDependencies(project, context, - scopes = if (isTest) listOf(Scope.COMPILE, Scope.TEST) else listOf(Scope.COMPILE)) + scopes = if (isTest) { + listOf(Scope.COMPILE, Scope.COMPILEONLY, Scope.TEST) + } else { + listOf(Scope.COMPILE, Scope.COMPILEONLY) + }) + File(project.directory, buildDirectory.path).mkdirs() 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 7732774d..43a9c6dd 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 @@ -91,7 +91,7 @@ open class JvmCompilerPlugin @Inject constructor( dependencyFilter = dependencyManager.createDependencyFilter(project, project.testDependencies), scopes = listOf(Scope.TEST)) val compileDependencies = dependencyManager.calculateDependencies(project, context, - scopes = listOf(Scope.COMPILE)) + scopes = listOf(Scope.COMPILE, Scope.COMPILEONLY)) val allDependencies = (testDependencies + compileDependencies).distinct() return testContributor.run(project, context, configName, allDependencies.toList()) } else { 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 74d591ea..137cb999 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 @@ -107,6 +107,9 @@ class DependencyManager @Inject constructor(val executors: KobaltExecutors, if (scopes.contains(Scope.COMPILE)) { addAll(project.compileDependencies) } + if (scopes.contains(Scope.COMPILEONLY)) { + addAll(project.compileOnlyDependencies) + } if (scopes.contains(Scope.RUNTIME)) { addAll(project.compileRuntimeDependencies) } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Scope.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Scope.kt index 6c18f555..7822159e 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Scope.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Scope.kt @@ -12,6 +12,7 @@ sealed class Scope(val scope: String, val dependencyLambda: (Project) -> List emptyList() }) object RUNTIME : Scope(JavaScopes.RUNTIME, Project::compileRuntimeDependencies) object TEST : Scope(JavaScopes.TEST, Project::testDependencies)