Hi,
I wanted to determine a list of dependencies split into external dependencies and sub-project dependencies.
So far I have found a few ways to get the dependencies, but cannot figure a way to split between external and sub-project.
task diag << {
def configuration = project.configurations.runtime
println("1: ${resolve1(configuration).collect { it.toString() }.sort()}")
println("2: ${resolve2(configuration).collect { it.toString() }.sort()}")
println("3: ${resolve3(configuration).collect { it.toString() }.sort()}")
}
private Iterable<ModuleVersionIdentifier> resolve1(Configuration config) {
config.incoming.resolutionResult.allDependencies
.findAll { DependencyResult result -> result instanceof ResolvedDependencyResult }
.collect { ResolvedDependencyResult result -> result.selected.id } as Set
}
private Iterable<ModuleVersionIdentifier> resolve2(Configuration config) {
config.incoming.resolutionResult.allComponents
.collect { ResolvedComponentResult component -> component.moduleVersion } as Set
}
private Iterable<ModuleVersionIdentifier> resolve3(Configuration config) {
recurseDeps(config.resolvedConfiguration.firstLevelModuleDependencies)
}
private Iterable<ModuleVersionIdentifier> recurseDeps(Iterable<ResolvedDependency> deps) {
def result = new HashSet()
deps.each { ResolvedDependency dep ->
result.add(dep.module.id)
result.addAll(recurseDeps(dep.children))
}
result
}
Could somebody please point me to the best way to determine which deps are external and which are sub-project?
Thanks,
Ross