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

Add runtime scope.

This commit is contained in:
Cedric Beust 2015-10-08 22:57:02 -07:00
parent a508f32295
commit 7690be501c
2 changed files with 18 additions and 8 deletions

View file

@ -64,17 +64,18 @@ open public class Project(
@Directive @Directive
public fun dependencies(init: Dependencies.() -> Unit) : Dependencies { public fun dependencies(init: Dependencies.() -> Unit) : Dependencies {
dependencies = Dependencies(this, compileDependencies, compileProvidedDependencies) dependencies = Dependencies(this, compileDependencies, compileProvidedDependencies, compileRuntimeDependencies)
dependencies!!.init() dependencies!!.init()
return dependencies!! return dependencies!!
} }
val compileDependencies : ArrayList<IClasspathDependency> = arrayListOf() val compileDependencies : ArrayList<IClasspathDependency> = arrayListOf()
val compileProvidedDependencies : ArrayList<IClasspathDependency> = arrayListOf() val compileProvidedDependencies : ArrayList<IClasspathDependency> = arrayListOf()
val compileRuntimeDependencies : ArrayList<IClasspathDependency> = arrayListOf()
@Directive @Directive
public fun dependenciesTest(init: Dependencies.() -> Unit) : Dependencies { public fun dependenciesTest(init: Dependencies.() -> Unit) : Dependencies {
dependencies = Dependencies(this, testDependencies, testProvidedDependencies) dependencies = Dependencies(this, testDependencies, testProvidedDependencies, compileRuntimeDependencies)
dependencies!!.init() dependencies!!.init()
return dependencies!! return dependencies!!
} }
@ -91,7 +92,8 @@ public class Sources(val project: Project, val sources: ArrayList<String>) {
} }
public class Dependencies(val project: Project, val dependencies: ArrayList<IClasspathDependency>, public class Dependencies(val project: Project, val dependencies: ArrayList<IClasspathDependency>,
val providedDependencies: ArrayList<IClasspathDependency>) { val providedDependencies: ArrayList<IClasspathDependency>,
val runtimeDependencies: ArrayList<IClasspathDependency>) {
@Directive @Directive
fun compile(vararg dep: String) { fun compile(vararg dep: String) {
dep.forEach { dependencies.add(MavenDependency.create(it)) } dep.forEach { dependencies.add(MavenDependency.create(it)) }
@ -101,5 +103,10 @@ public class Dependencies(val project: Project, val dependencies: ArrayList<ICla
fun provided(vararg dep: String) { fun provided(vararg dep: String) {
dep.forEach { providedDependencies.add(MavenDependency.create(it))} dep.forEach { providedDependencies.add(MavenDependency.create(it))}
} }
@Directive
fun runtime(vararg dep: String) {
dep.forEach { runtimeDependencies.add(MavenDependency.create(it))}
}
} }

View file

@ -143,17 +143,20 @@ public class PackagingPlugin @Inject constructor(val dependencyManager : Depende
} }
// //
// If fatJar is true, add all the transitive dependencies too // If fatJar is true, add all the transitive dependencies as well (both compile and runtime)
// //
if (jar.fatJar) { if (jar.fatJar) {
log(2, "Creating fat jar") log(2, "Creating fat jar")
val allDependencies = dependencyManager.transitiveClosure(project.compileDependencies)
allDependencies.map { it.jarFile.get() }.forEach { listOf(dependencyManager.transitiveClosure(project.compileDependencies),
if (! isExcluded(it, jar.excludes)) { dependencyManager.transitiveClosure(project.compileRuntimeDependencies)).forEach { dep ->
dep.map { it.jarFile.get() }.forEach {
if (!isExcluded(it, jar.excludes)) {
allFiles.add(IncludedFile(arrayListOf(FileSpec(it.path)))) allFiles.add(IncludedFile(arrayListOf(FileSpec(it.path))))
} }
} }
} }
}
// //
// Generate the manifest // Generate the manifest