Skip to content

Commit

Permalink
Merge pull request #328 from imonteroperez/dependency-profile
Browse files Browse the repository at this point in the history
Support for dependency replacement on profiles
  • Loading branch information
imonteroperez committed Dec 2, 2021
2 parents 5a9f15e + 6342af0 commit 5a86f00
Showing 1 changed file with 34 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
import java.io.Writer;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -159,6 +161,26 @@ public void addDependencies(Map<String, VersionNumber> toAdd, Map<String, Versio
dependencies = doc.getRootElement().addElement("dependencies");
}

manageDependencies(toAdd, toReplace, toAddTest, toReplaceTest, pluginGroupIds, doc, dependencies, true);
Element profiles = doc.getRootElement().element("profiles");
if (profiles != null) {
Map<String, VersionNumber> empty = new HashMap<>();
Iterator<Element> elementIterator = profiles.elementIterator("profile");
while(elementIterator.hasNext()) {
Element e = elementIterator.next();
Element profileDependencies = e.element("dependencies");
if (profileDependencies == null) {
continue;
}
manageDependencies(empty, toReplace, empty, toReplaceTest, pluginGroupIds, doc, profileDependencies, false);
}
}
writeDocument(pom, doc);
}

private void manageDependencies(Map<String, VersionNumber> toAdd, Map<String, VersionNumber> toReplace,
Map<String, VersionNumber> toAddTest, Map<String, VersionNumber> toReplaceTest,
Map<String, String> pluginGroupIds, Document doc, Element dependencies, boolean addition) {
Set<String> depsWithoutClassifier = new HashSet<>();
for (Element mavenDependency : (List<Element>) dependencies.elements("dependency")) {
Element artifactId = mavenDependency.element(ARTIFACT_ID_ELEMENT);
Expand Down Expand Up @@ -231,17 +253,18 @@ public void addDependencies(Map<String, VersionNumber> toAdd, Map<String, Versio
toReplaceUsed.put(trimmedArtifactId, replacement);
}
}
// If the replacement dependencies weren't explicitly present in the pom, add them directly now
toReplace.entrySet().removeAll(toReplaceUsed.entrySet());
toReplaceTest.entrySet().removeAll(toReplaceTestUsed.entrySet());
toAdd.putAll(toReplace);
toAddTest.putAll(toReplaceTest);

dependencies.addComment("SYNTHETIC");
addPlugins(toAdd, pluginGroupIds, dependencies, null);
addPlugins(toAddTest, pluginGroupIds, dependencies, "test");

writeDocument(pom, doc);

if (addition) {
// If the replacement dependencies weren't explicitly present in the pom, add them directly now
toReplace.entrySet().removeAll(toReplaceUsed.entrySet());
toReplaceTest.entrySet().removeAll(toReplaceTestUsed.entrySet());
toAdd.putAll(toReplace);
toAddTest.putAll(toReplaceTest);

dependencies.addComment("SYNTHETIC");
addPlugins(toAdd, pluginGroupIds, dependencies, null);
addPlugins(toAddTest, pluginGroupIds, dependencies, "test");
}
}

/**
Expand Down

0 comments on commit 5a86f00

Please sign in to comment.