提交 b8aec882 编写于 作者: C Christoph Kutzinski

[FIXED JENKINS-10366] choose most 'relevant' job for dependency graph if...

[FIXED JENKINS-10366] choose most 'relevant' job for dependency graph if multiple jobs are building the same maven module
上级 a70e8675
......@@ -404,9 +404,11 @@ public final class MavenModule extends AbstractMavenProject<MavenModule,MavenBui
for (MavenModule m : Jenkins.getInstance().getAllItems(MavenModule.class)) {
if(m.isDisabled()) continue;
ModuleDependency moduleDependency = m.asDependency();
modules.put(moduleDependency,m);
MavenModule old = modules.get(moduleDependency);
MavenModule relevant = chooseMoreRelevantModule(old, m);
modules.put(moduleDependency, relevant);
if (hasDependenciesWithUnknownVersion) {
modules.put(moduleDependency.withUnknownVersion(),m);
modules.put(moduleDependency.withUnknownVersion(),relevant);
}
}
data = new MavenDependencyComputationData(modules);
......@@ -477,6 +479,54 @@ public final class MavenModule extends AbstractMavenProject<MavenModule,MavenBui
}
return false;
}
private MavenModule chooseMoreRelevantModule(MavenModule mm1, MavenModule mm2) {
if (mm1 == null) {
return mm2;
}
if (mm2 == null) {
return mm1;
}
int relevancy1 = getDependencyRelevancy(mm1);
int relevancy2 = getDependencyRelevancy(mm2);
if (relevancy1 > relevancy2) {
return mm1;
} else if (relevancy2 > relevancy1) {
return mm2;
}
// arbitrary, but reproduceable
if (mm1.getParent().getName().compareTo(mm2.getParent().getName()) < 0) {
return mm2;
} else { // should always mean > 0 as name is unique
return mm1;
}
}
private int getDependencyRelevancy(MavenModule mm) {
int relevancy = 0;
for (String goal : Util.tokenize(mm.getGoals())) {
if ("deploy".equals(goal) || "deploy:deploy".equals(goal)) {
return 2;
}
if ("install".equals(goal)) {
relevancy = 1;
}
}
for (Publisher publisher : mm.getParent().getPublishers()) {
if (publisher instanceof RedeployPublisher) {
return 2;
}
}
return relevancy;
}
private static class MavenDependencyComputationData {
boolean withUnknownVersions = false;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册