mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
maven: honor dependency winner scope; handle dependencies conflicts and duplicates (IDEA-133331)
This commit is contained in:
+13
-8
@@ -60,8 +60,8 @@ public class Maven32AetherModelConverter extends MavenModelConverter {
|
||||
|
||||
Map<Artifact, MavenArtifact> convertedArtifacts = new THashMap<Artifact, MavenArtifact>();
|
||||
result.setExtensions(convertArtifacts(extensions, convertedArtifacts, localRepository));
|
||||
result.setDependencies(convertArtifacts(dependencies, convertedArtifacts, localRepository));
|
||||
result.setDependencyTree(convertAetherDependencyNodes(null, dependencyTree, convertedArtifacts, localRepository));
|
||||
result.setDependencies(convertArtifacts(dependencies, convertedArtifacts, localRepository));
|
||||
|
||||
result.setRemoteRepositories(convertRepositories(model.getRepositories()));
|
||||
result.setProfiles(convertProfiles(model.getProfiles()));
|
||||
@@ -88,19 +88,24 @@ public class Maven32AetherModelConverter extends MavenModelConverter {
|
||||
MavenArtifactState state = MavenArtifactState.ADDED;
|
||||
MavenArtifact relatedArtifact = null;
|
||||
|
||||
String scope = each.getDependency().getScope();
|
||||
Object winner = data.get(ConflictResolver.NODE_DATA_WINNER);
|
||||
if(winner instanceof DependencyNode) {
|
||||
if (winner instanceof DependencyNode) {
|
||||
DependencyNode winnerNode = (DependencyNode)winner;
|
||||
if(!StringUtil.equals(each.getVersion().toString(), winnerNode.getVersion().toString())) {
|
||||
scope = winnerNode.getDependency().getScope();
|
||||
Artifact winnerArtifact = RepositoryUtils.toArtifact(winnerNode.getDependency().getArtifact());
|
||||
relatedArtifact = convertArtifact(winnerArtifact, nativeToConvertedMap, localRepository);
|
||||
if (!StringUtil.equals(each.getVersion().toString(), winnerNode.getVersion().toString())) {
|
||||
state = MavenArtifactState.CONFLICT;
|
||||
Artifact winnerArtifact = RepositoryUtils.toArtifact(winnerNode.getDependency().getArtifact());
|
||||
relatedArtifact = convertArtifact(winnerArtifact, nativeToConvertedMap, localRepository);
|
||||
}
|
||||
else {
|
||||
state = MavenArtifactState.DUPLICATE;
|
||||
}
|
||||
}
|
||||
|
||||
MavenArtifactNode newNode = new MavenArtifactNode(
|
||||
parent, ma, state, relatedArtifact, each.getDependency().getScope(),
|
||||
premanagedVersion, premanagedScope);
|
||||
ma.setScope(scope);
|
||||
MavenArtifactNode newNode =
|
||||
new MavenArtifactNode(parent, ma, state, relatedArtifact, each.getDependency().getScope(), premanagedVersion, premanagedScope);
|
||||
newNode.setDependencies(convertAetherDependencyNodes(newNode, each.getChildren(), nativeToConvertedMap, localRepository));
|
||||
result.add(newNode);
|
||||
}
|
||||
|
||||
+23
-4
@@ -955,7 +955,8 @@ public class MavenProjectsStructure extends SimpleTreeStructure {
|
||||
protected void setNameAndTooltip(String name, @Nullable String tooltip, SimpleTextAttributes attributes) {
|
||||
super.setNameAndTooltip(name, tooltip, attributes);
|
||||
if (myProjectsNavigator.getShowVersions()) {
|
||||
addColoredFragment(":" + myMavenProject.getMavenId().getVersion(), new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, JBColor.GRAY));
|
||||
addColoredFragment(":" + myMavenProject.getMavenId().getVersion(),
|
||||
new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, JBColor.GRAY));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1278,7 +1279,11 @@ public class MavenProjectsStructure extends SimpleTreeStructure {
|
||||
int validChildCount = 0;
|
||||
|
||||
for (MavenArtifactNode each : children) {
|
||||
if (each.getState() != MavenArtifactState.ADDED && each.getState() != MavenArtifactState.CONFLICT) continue;
|
||||
if (each.getState() != MavenArtifactState.ADDED &&
|
||||
each.getState() != MavenArtifactState.CONFLICT &&
|
||||
each.getState() != MavenArtifactState.DUPLICATE) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (newNodes == null) {
|
||||
if (validChildCount < myChildren.size()) {
|
||||
@@ -1375,7 +1380,7 @@ public class MavenProjectsStructure extends SimpleTreeStructure {
|
||||
|
||||
private String getToolTip() {
|
||||
final StringBuilder myToolTip = new StringBuilder("");
|
||||
String scope = myArtifact.getScope();
|
||||
String scope = myArtifactNode.getOriginalScope();
|
||||
|
||||
if (StringUtil.isNotEmpty(scope) && !MavenConstants.SCOPE_COMPILE.equals(scope)) {
|
||||
myToolTip.append(scope).append(" ");
|
||||
@@ -1386,7 +1391,10 @@ public class MavenProjectsStructure extends SimpleTreeStructure {
|
||||
myToolTip.append(" with ").append(myArtifactNode.getRelatedArtifact().getVersion());
|
||||
}
|
||||
}
|
||||
return myToolTip.toString();
|
||||
if (myArtifactNode.getState() == MavenArtifactState.DUPLICATE) {
|
||||
myToolTip.append("omitted for duplicate");
|
||||
}
|
||||
return myToolTip.toString().trim();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1394,6 +1402,17 @@ public class MavenProjectsStructure extends SimpleTreeStructure {
|
||||
setNameAndTooltip(getName(), null, getToolTip());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setNameAndTooltip(String name, @Nullable String tooltip, SimpleTextAttributes attributes) {
|
||||
final SimpleTextAttributes mergedAttributes;
|
||||
if (myArtifactNode.getState() == MavenArtifactState.CONFLICT || myArtifactNode.getState() == MavenArtifactState.DUPLICATE) {
|
||||
mergedAttributes = SimpleTextAttributes.merge(attributes, SimpleTextAttributes.GRAYED_ATTRIBUTES);
|
||||
} else {
|
||||
mergedAttributes = attributes;
|
||||
}
|
||||
super.setNameAndTooltip(name, tooltip, mergedAttributes);
|
||||
}
|
||||
|
||||
private void updateDependency() {
|
||||
setErrorLevel(myArtifact.isResolved() ? ErrorLevel.NONE : ErrorLevel.ERROR);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user