mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 08:27:12 -07:00
Better filter dependency implementation.
This commit is contained in:
parent
e513508807
commit
89559d5952
2 changed files with 34 additions and 17 deletions
|
@ -31,14 +31,15 @@ import org.eclipse.aether.util.artifact.JavaScopes
|
||||||
import org.eclipse.aether.util.filter.AndDependencyFilter
|
import org.eclipse.aether.util.filter.AndDependencyFilter
|
||||||
import org.eclipse.aether.util.filter.DependencyFilterUtils
|
import org.eclipse.aether.util.filter.DependencyFilterUtils
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.util.*
|
||||||
import java.util.concurrent.Future
|
import java.util.concurrent.Future
|
||||||
|
|
||||||
enum class Scope(val scope: String) {
|
enum class Scope(val scope: String, val dependencyLambda: (Project) -> List<IClasspathDependency>) {
|
||||||
COMPILE(JavaScopes.COMPILE),
|
COMPILE(JavaScopes.COMPILE, { project : Project -> project.compileDependencies }),
|
||||||
PROVIDED(JavaScopes.PROVIDED),
|
PROVIDED(JavaScopes.PROVIDED, { project : Project -> project.compileProvidedDependencies }),
|
||||||
SYSTEM(JavaScopes.SYSTEM),
|
SYSTEM(JavaScopes.SYSTEM, { project : Project -> emptyList() }),
|
||||||
RUNTIME(JavaScopes.RUNTIME),
|
RUNTIME(JavaScopes.RUNTIME, { project : Project -> project.compileRuntimeDependencies }),
|
||||||
TEST(JavaScopes.TEST)
|
TEST(JavaScopes.TEST, { project : Project -> project.testDependencies })
|
||||||
;
|
;
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -55,13 +56,13 @@ enum class Scope(val scope: String) {
|
||||||
* filters passed.
|
* filters passed.
|
||||||
*/
|
*/
|
||||||
fun toDependencyLambda(scopes: Collection<Scope>) : (Project) -> List<IClasspathDependency> {
|
fun toDependencyLambda(scopes: Collection<Scope>) : (Project) -> List<IClasspathDependency> {
|
||||||
val result =
|
val result = { project : Project ->
|
||||||
if (scopes.contains(Scope.COMPILE) && scopes.contains(Scope.TEST)) {
|
scopes.fold(arrayListOf<IClasspathDependency>(),
|
||||||
{ project : Project -> project.compileDependencies + project.testDependencies }
|
{ l: ArrayList<IClasspathDependency>, scope: Scope ->
|
||||||
} else if (scopes.contains(Scope.TEST)) {
|
val deps = scope.dependencyLambda(project)
|
||||||
{ project : Project -> project.testDependencies }
|
l.addAll(deps)
|
||||||
} else {
|
l
|
||||||
{ project : Project -> project.compileDependencies }
|
})
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,9 +91,25 @@ class DependencyManagerTest @Inject constructor(val dependencyManager: Dependenc
|
||||||
|
|
||||||
val compileResult = compileBuildFile(buildFileString, Args(), compilerFactory)
|
val compileResult = compileBuildFile(buildFileString, Args(), compilerFactory)
|
||||||
val project2 = compileResult.projects[1]
|
val project2 = compileResult.projects[1]
|
||||||
val dependencies = dependencyManager2.resolve(project2, Kobalt.context!!, isTest = false,
|
|
||||||
passedScopeFilters = listOf(Scope.COMPILE, Scope.RUNTIME))
|
dependencyManager2.resolve(project2, Kobalt.context!!, isTest = false,
|
||||||
assertContains(dependencies, ":testng:")
|
passedScopeFilters = listOf(Scope.COMPILE, Scope.RUNTIME)).let { dependencies ->
|
||||||
assertContains(dependencies, ":jcommander:")
|
assertThat(dependencies.size).isEqualTo(4)
|
||||||
|
assertContains(dependencies, ":testng:")
|
||||||
|
assertContains(dependencies, ":jcommander:")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencyManager2.resolve(project2, Kobalt.context!!, isTest = false,
|
||||||
|
passedScopeFilters = listOf(Scope.COMPILE)).let { dependencies ->
|
||||||
|
assertThat(dependencies.size).isEqualTo(3)
|
||||||
|
assertContains(dependencies, ":testng:")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencyManager2.resolve(project2, Kobalt.context!!, isTest = false,
|
||||||
|
passedScopeFilters = listOf(Scope.RUNTIME)).let { dependencies ->
|
||||||
|
assertThat(dependencies.size).isEqualTo(3)
|
||||||
|
assertContains(dependencies, ":jcommander:")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue