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

Beginning implementation of compileOnly.

This commit is contained in:
Erik C. Thauvin 2017-04-07 19:37:48 -07:00
parent dca28669d1
commit 5f8021334a
6 changed files with 20 additions and 4 deletions

View file

@ -13,6 +13,7 @@ interface IDependencyHolder {
val compileDependencies : ArrayList<IClasspathDependency> val compileDependencies : ArrayList<IClasspathDependency>
val optionalDependencies : ArrayList<IClasspathDependency> val optionalDependencies : ArrayList<IClasspathDependency>
val compileProvidedDependencies : ArrayList<IClasspathDependency> val compileProvidedDependencies : ArrayList<IClasspathDependency>
val compileOnlyDependencies : ArrayList<IClasspathDependency>
val compileRuntimeDependencies : ArrayList<IClasspathDependency> val compileRuntimeDependencies : ArrayList<IClasspathDependency>
val excludedDependencies : ArrayList<IClasspathDependency> val excludedDependencies : ArrayList<IClasspathDependency>
val nativeDependencies : ArrayList<IClasspathDependency> val nativeDependencies : ArrayList<IClasspathDependency>
@ -29,6 +30,7 @@ open class DependencyHolder : IDependencyHolder {
override val compileDependencies : ArrayList<IClasspathDependency> = arrayListOf() override val compileDependencies : ArrayList<IClasspathDependency> = arrayListOf()
override val optionalDependencies : ArrayList<IClasspathDependency> = arrayListOf() override val optionalDependencies : ArrayList<IClasspathDependency> = arrayListOf()
override val compileProvidedDependencies : ArrayList<IClasspathDependency> = arrayListOf() override val compileProvidedDependencies : ArrayList<IClasspathDependency> = arrayListOf()
override val compileOnlyDependencies : ArrayList<IClasspathDependency> = arrayListOf()
override val compileRuntimeDependencies : ArrayList<IClasspathDependency> = arrayListOf() override val compileRuntimeDependencies : ArrayList<IClasspathDependency> = arrayListOf()
override val excludedDependencies : ArrayList<IClasspathDependency> = arrayListOf() override val excludedDependencies : ArrayList<IClasspathDependency> = arrayListOf()
override val nativeDependencies : ArrayList<IClasspathDependency> = arrayListOf() override val nativeDependencies : ArrayList<IClasspathDependency> = arrayListOf()
@ -37,7 +39,7 @@ open class DependencyHolder : IDependencyHolder {
override fun dependencies(init: Dependencies.() -> Unit) : Dependencies { override fun dependencies(init: Dependencies.() -> Unit) : Dependencies {
dependencies = Dependencies(project, compileDependencies, optionalDependencies, compileProvidedDependencies, dependencies = Dependencies(project, compileDependencies, optionalDependencies, compileProvidedDependencies,
compileRuntimeDependencies, excludedDependencies, nativeDependencies) compileOnlyDependencies, compileRuntimeDependencies, excludedDependencies, nativeDependencies)
dependencies!!.init() dependencies!!.init()
return dependencies!! return dependencies!!
} }

View file

@ -91,7 +91,8 @@ open class Project(
@Directive @Directive
fun dependenciesTest(init: Dependencies.() -> Unit) : Dependencies { fun dependenciesTest(init: Dependencies.() -> Unit) : Dependencies {
dependencies = Dependencies(this, testDependencies, arrayListOf(), dependencies = Dependencies(this, testDependencies, arrayListOf(),
testProvidedDependencies, compileRuntimeDependencies, excludedDependencies, nativeDependencies) testProvidedDependencies, compileOnlyDependencies, compileRuntimeDependencies,
excludedDependencies, nativeDependencies)
dependencies!!.init() dependencies!!.init()
return dependencies!! return dependencies!!
} }
@ -154,6 +155,7 @@ class Dependencies(val project: Project,
val dependencies: ArrayList<IClasspathDependency>, val dependencies: ArrayList<IClasspathDependency>,
val optionalDependencies: ArrayList<IClasspathDependency>, val optionalDependencies: ArrayList<IClasspathDependency>,
val providedDependencies: ArrayList<IClasspathDependency>, val providedDependencies: ArrayList<IClasspathDependency>,
val compileOnlyDependencies: ArrayList<IClasspathDependency>,
val runtimeDependencies: ArrayList<IClasspathDependency>, val runtimeDependencies: ArrayList<IClasspathDependency>,
val excludedDependencies: ArrayList<IClasspathDependency>, val excludedDependencies: ArrayList<IClasspathDependency>,
val nativeDependencies: ArrayList<IClasspathDependency>) { val nativeDependencies: ArrayList<IClasspathDependency>) {
@ -244,6 +246,9 @@ class Dependencies(val project: Project,
addToDependencies(project, dependencies, arrayOf(dep), excludeConfig = excludeConfig) addToDependencies(project, dependencies, arrayOf(dep), excludeConfig = excludeConfig)
} }
@Directive
fun compileOnly(vararg dep: String) = addToDependencies(project, compileOnlyDependencies, dep)
@Directive @Directive
fun compileOptional(vararg dep: String) { fun compileOptional(vararg dep: String) {
addToDependencies(project, optionalDependencies, dep, optional = true) addToDependencies(project, optionalDependencies, dep, optional = true)

View file

@ -70,7 +70,12 @@ class CompilerUtils @Inject constructor(val files: KFiles, val dependencyManager
copyResources(project, context, SourceSet.of(isTest)) copyResources(project, context, SourceSet.of(isTest))
val fullClasspath = dependencyManager.calculateDependencies(project, context, 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() File(project.directory, buildDirectory.path).mkdirs()

View file

@ -91,7 +91,7 @@ open class JvmCompilerPlugin @Inject constructor(
dependencyFilter = dependencyManager.createDependencyFilter(project, project.testDependencies), dependencyFilter = dependencyManager.createDependencyFilter(project, project.testDependencies),
scopes = listOf(Scope.TEST)) scopes = listOf(Scope.TEST))
val compileDependencies = dependencyManager.calculateDependencies(project, context, val compileDependencies = dependencyManager.calculateDependencies(project, context,
scopes = listOf(Scope.COMPILE)) scopes = listOf(Scope.COMPILE, Scope.COMPILEONLY))
val allDependencies = (testDependencies + compileDependencies).distinct() val allDependencies = (testDependencies + compileDependencies).distinct()
return testContributor.run(project, context, configName, allDependencies.toList()) return testContributor.run(project, context, configName, allDependencies.toList())
} else { } else {

View file

@ -107,6 +107,9 @@ class DependencyManager @Inject constructor(val executors: KobaltExecutors,
if (scopes.contains(Scope.COMPILE)) { if (scopes.contains(Scope.COMPILE)) {
addAll(project.compileDependencies) addAll(project.compileDependencies)
} }
if (scopes.contains(Scope.COMPILEONLY)) {
addAll(project.compileOnlyDependencies)
}
if (scopes.contains(Scope.RUNTIME)) { if (scopes.contains(Scope.RUNTIME)) {
addAll(project.compileRuntimeDependencies) addAll(project.compileRuntimeDependencies)
} }

View file

@ -12,6 +12,7 @@ sealed class Scope(val scope: String, val dependencyLambda: (Project) -> List<IC
object COMPILE : Scope(JavaScopes.COMPILE, Project::compileDependencies) object COMPILE : Scope(JavaScopes.COMPILE, Project::compileDependencies)
object PROVIDED : Scope(JavaScopes.PROVIDED, Project::compileProvidedDependencies) object PROVIDED : Scope(JavaScopes.PROVIDED, Project::compileProvidedDependencies)
object COMPILEONLY : Scope("compileOnly", Project::compileOnlyDependencies)
object SYSTEM : Scope(JavaScopes.SYSTEM, { project -> emptyList() }) object SYSTEM : Scope(JavaScopes.SYSTEM, { project -> emptyList() })
object RUNTIME : Scope(JavaScopes.RUNTIME, Project::compileRuntimeDependencies) object RUNTIME : Scope(JavaScopes.RUNTIME, Project::compileRuntimeDependencies)
object TEST : Scope(JavaScopes.TEST, Project::testDependencies) object TEST : Scope(JavaScopes.TEST, Project::testDependencies)