Given a project name, find all the maven modules that depend on the project's modules.

This commit is contained in:
Manuele Simi 2020-03-10 16:16:09 -04:00
parent 6b5ddd5a73
commit 3b500f54a0
1 changed files with 36 additions and 3 deletions

39
Jenkinsfile vendored
View File

@ -1,7 +1,8 @@
def counts = 0 def counts = 0
def projects2artifacts=[:] def projects2artifacts = [:]
def modules2deps=[:] def modules2deps = [:]
def inputProject = 'storagehub-client-library'
pipeline { pipeline {
agent { agent {
@ -29,12 +30,44 @@ pipeline {
m.getDependencies().each { d -> modules2deps[m.name] << "${d.groupId}:${d.artifactId}" } m.getDependencies().each { d -> modules2deps[m.name] << "${d.groupId}:${d.artifactId}" }
} }
println "FOUND ${modules2deps.size()} modules" println "FOUND ${modules2deps.size()} modules"
modules2deps.each { k,v -> println ("MODULE ${k} DEPENDS on ${v}") } //modules2deps.each { k,v -> println ("MODULE ${k} DEPENDS on ${v}") }
}
}
}
stage('find downstream projects') {
steps {
script {
println "PROJECT ${inputProject} BUILDS ${projects2artifacts[inputProject]} artifacts"
// first, let's find out what components depends on the project's artifacts
def downstreamdeps = [:]
projects2artifacts[inputProject].each { a ->
downstreamdeps[a] = []
downstreamdeps[a] << findDownstreamDependencies(modules2deps, a)
println "${a} is used by ${downstreamdeps[a]}"
}
// then we look for the projects that build the downstream dependencies
//downstreamdeps.each { k, v ->
// println "${k} is build by ${findProject()}"
//}
} }
} }
} }
} }
} }
def findDownstreamDependencies(modules2deps, artifact) {
def downdeps = []
println "Looking for users of ${artifact}"
modules2deps.each { k,v -> if (v.contains("${artifact}")) downdeps << k }
downdeps
}
def findProject(projects2artifacts, artifact) {
println "Looking for project that builds ${artifact}"
projects2artifacts.find { k,v -> v.contains("${artifact}")}.first.key
}
/* /*
def printJob(job) { def printJob(job) {