in tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/SpringBootStarterMojo.java [211:289]
private void fixExcludedDependencies(Document pom) throws Exception {
Set<String> loggingImpl = new HashSet<>();
loggingImpl.add("commons-logging:commons-logging");
loggingImpl.add("log4j:log4j");
loggingImpl.add("log4j:apache-log4j-extras");
// removing also the default implementation
loggingImpl.add("ch.qos.logback:logback-core");
loggingImpl.add("ch.qos.logback:logback-classic");
loggingImpl.add("org.apache.logging.log4j:log4j");
loggingImpl.add("org.apache.logging.log4j:log4j-jcl");
loggingImpl.add("org.apache.logging.log4j:log4j-core");
loggingImpl.add("org.apache.logging.log4j:log4j-slf4j2-impl");
loggingImpl.add("org.slf4j:slf4j-jcl");
loggingImpl.add("org.slf4j:slf4j-jdk14");
loggingImpl.add("org.slf4j:slf4j-log4j12");
loggingImpl.add("org.slf4j:slf4j-log4j13");
loggingImpl.add("org.slf4j:slf4j-nop");
loggingImpl.add("org.slf4j:slf4j-simple");
loggingImpl.add("org.slf4j:slf4j-reload4j");
// excluded dependencies
Set<String> configExclusions = new HashSet<>();
Properties properties = new Properties();
try (InputStream is = getClass().getResourceAsStream("/spring-boot-fix-dependencies.properties")) {
properties.load(is);
}
String artExcl = properties.getProperty("exclude_" + getMainDepArtifactId());
getLog().debug("Configured exclusions: " + artExcl);
if (artExcl != null && !artExcl.trim().isEmpty()) {
for (String dep : artExcl.split(",")) {
getLog().debug("Adding configured exclusion: " + dep);
configExclusions.add(dep);
}
}
Set<String> libsToRemove = new TreeSet<>();
libsToRemove.addAll(loggingImpl);
libsToRemove.addAll(configExclusions);
libsToRemove = filterIncludedArtifacts(libsToRemove);
if (!libsToRemove.isEmpty()) {
getLog().info("Spring-Boot-Starter: the following dependencies will be removed from the starter: "
+ libsToRemove);
XPath xpath = XPathFactory.newInstance().newXPath();
Node dependency = ((NodeList) xpath
.compile("/project/dependencies/dependency[artifactId/text() = '" + getMainDepArtifactId() + "']")
.evaluate(pom, XPathConstants.NODESET)).item(0);
Element exclusions = pom.createElement("exclusions");
dependency.appendChild(pom.createComment(GENERATED_SECTION_START));
dependency.appendChild(exclusions);
dependency.appendChild(pom.createComment(GENERATED_SECTION_END));
for (String lib : libsToRemove) {
String groupIdStr = lib.split("\\:")[0];
String artifactIdStr = lib.split("\\:")[1];
Element exclusion = pom.createElement("exclusion");
Element groupId = pom.createElement("groupId");
groupId.setTextContent(groupIdStr);
exclusion.appendChild(groupId);
Element artifactId = pom.createElement("artifactId");
artifactId.setTextContent(artifactIdStr);
exclusion.appendChild(artifactId);
exclusions.appendChild(exclusion);
}
}
}