diff --git a/biz.aQute.bnd.maven/src/aQute/bnd/maven/lib/executions/PluginExecutions.java b/biz.aQute.bnd.maven/src/aQute/bnd/maven/lib/executions/PluginExecutions.java index f9cc0ac5de..79d2b4db61 100644 --- a/biz.aQute.bnd.maven/src/aQute/bnd/maven/lib/executions/PluginExecutions.java +++ b/biz.aQute.bnd.maven/src/aQute/bnd/maven/lib/executions/PluginExecutions.java @@ -3,22 +3,27 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.Set; import org.apache.maven.model.PluginExecution; import org.codehaus.plexus.util.xml.Xpp3Dom; -import aQute.bnd.unmodifiable.Lists; +import aQute.bnd.unmodifiable.Sets; public class PluginExecutions { - - static final List PACKAGING_GOALS = Lists.of("jar", "test-jar", "war"); + static final Set PACKAGING_GOALS = Sets.of("jar", "test-jar", "war"); private PluginExecutions() {} public static String defaultClassifier(PluginExecution pluginExecution) { List goals = pluginExecution.getGoals(); - - return goals.contains("jar") ? "" : (goals.contains("test-jar") ? "tests" : ""); + if (goals.contains("jar") || goals.contains("war")) { + return ""; + } + if (goals.contains("test-jar")) { + return "tests"; + } + return ""; } public static String extractClassifier(PluginExecution pluginExecution) { diff --git a/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndPackagingLifecycleParticipant.java b/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndPackagingLifecycleParticipant.java index a5f18f9deb..36d1eeb153 100644 --- a/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndPackagingLifecycleParticipant.java +++ b/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndPackagingLifecycleParticipant.java @@ -4,6 +4,7 @@ import static aQute.bnd.maven.lib.executions.PluginExecutions.matchesClassifier; import java.util.List; +import java.util.Objects; import java.util.Optional; import org.apache.maven.AbstractMavenLifecycleParticipant; @@ -52,7 +53,7 @@ public class BndPackagingLifecycleParticipant extends AbstractMavenLifecyclePart public static final String MAVEN_WAR_PLUGIN_ARTIFACT_ID = "maven-war-plugin"; - private Logger logger; + private Logger logger; @Override public void afterProjectsRead(final MavenSession session) throws MavenExecutionException { @@ -86,11 +87,10 @@ public void enableLogging(final Logger logger) { this.logger = logger; } - protected Optional findMatchingMavenPackagingPluginExecution(Plugin mavenPackagingPlugin, - String classifier) { - return mavenPackagingPlugin.getExecutions() - .stream() - .filter(ex -> matchesClassifier(ex, classifier)) + protected Optional findMatchingMavenPackagingPluginExecution( + List mavenPackagingPluginExecutions, String classifier) { + return mavenPackagingPluginExecutions.stream() + .filter(execution -> matchesClassifier(execution, classifier)) .findFirst(); } @@ -119,9 +119,11 @@ protected Plugin getBndMavenPluginFromContainer(final PluginContainer pluginCont * {@code null} if not present. */ protected Plugin getMavenJarPlugin(final Model model) { - final Build build = model.getBuild(); - if (build != null) { - return getMavenJarPluginFromContainer(build); + if (Objects.equals(model.getPackaging(), "jar")) { + final Build build = model.getBuild(); + if (build != null) { + return getMavenJarPluginFromContainer(build); + } } return null; } @@ -139,9 +141,11 @@ protected Plugin getMavenJarPluginFromContainer(final PluginContainer pluginCont * {@code null} if not present. */ protected Plugin getMavenWarPlugin(final Model model) { - final Build build = model.getBuild(); - if (build != null) { - return getMavenWarPluginFromContainer(build); + if (Objects.equals(model.getPackaging(), "war")) { + final Build build = model.getBuild(); + if (build != null) { + return getMavenWarPluginFromContainer(build); + } } return null; } @@ -166,7 +170,6 @@ && nullToEmpty(artifactId).equals(nullToEmpty(plugin.getArtifactId()))) { } result = plugin; } - } return result; } @@ -176,18 +179,27 @@ protected String nullToEmpty(String str) { .orElse(""); } - protected void processExecutions(List bndMavenPluginExecutions, Plugin mavenPackagingPlugin, MavenProject project) { + protected void processExecutions(List bndMavenPluginExecutions, Plugin mavenPackagingPlugin, + MavenProject project) { bndMavenPluginExecutions.stream() .filter(PluginExecutions::isPackagingGoal) - .forEach(bndMavenPluginEx -> { - findMatchingMavenPackagingPluginExecution(mavenPackagingPlugin, extractClassifier(bndMavenPluginEx)) - .ifPresent(packagingPluginEx -> { - mavenPackagingPlugin.getExecutions() - .remove(packagingPluginEx); - - if (logger.isDebugEnabled()) { - logger.debug("Disabled execution of " + packagingPluginEx + " in " + project + " by " - + THIS_ARTIFACT_ID); + .forEach(bndMavenPluginExecution -> { + String classifier = extractClassifier(bndMavenPluginExecution); + findMatchingMavenPackagingPluginExecution(mavenPackagingPlugin.getExecutions(), classifier) + .ifPresent(execution -> { + List goals = execution.getGoals(); + boolean removed = goals.removeIf(goal -> { + if (PluginExecutions.isPackagingGoal(goal)) { + if (logger.isDebugEnabled()) { + logger.debug(THIS_ARTIFACT_ID + " disabled " + mavenPackagingPlugin.getArtifactId() + + ":" + goal + " (" + execution.getId() + ") @ " + project.getArtifactId()); + } + return true; + } + return false; + }); + if (removed && goals.isEmpty()) { + mavenPackagingPlugin.removeExecution(execution); } }); });