Skip to content

Commit

Permalink
Merge pull request #5238 from bjhargrave/maven-lifecycle-participatio…
Browse files Browse the repository at this point in the history
…n-fix

Maven lifecycle participation fix
  • Loading branch information
bjhargrave committed May 5, 2022
2 parents d18830a + 35abc2f commit 815cb77
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 28 deletions.
Expand Up @@ -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<String> PACKAGING_GOALS = Lists.of("jar", "test-jar", "war");
static final Set<String> PACKAGING_GOALS = Sets.of("jar", "test-jar", "war");

private PluginExecutions() {}

public static String defaultClassifier(PluginExecution pluginExecution) {
List<String> 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) {
Expand Down
Expand Up @@ -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;
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -86,11 +87,10 @@ public void enableLogging(final Logger logger) {
this.logger = logger;
}

protected Optional<PluginExecution> findMatchingMavenPackagingPluginExecution(Plugin mavenPackagingPlugin,
String classifier) {
return mavenPackagingPlugin.getExecutions()
.stream()
.filter(ex -> matchesClassifier(ex, classifier))
protected Optional<PluginExecution> findMatchingMavenPackagingPluginExecution(
List<PluginExecution> mavenPackagingPluginExecutions, String classifier) {
return mavenPackagingPluginExecutions.stream()
.filter(execution -> matchesClassifier(execution, classifier))
.findFirst();
}

Expand Down Expand Up @@ -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;
}
Expand All @@ -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;
}
Expand All @@ -166,7 +170,6 @@ && nullToEmpty(artifactId).equals(nullToEmpty(plugin.getArtifactId()))) {
}
result = plugin;
}

}
return result;
}
Expand All @@ -176,18 +179,27 @@ protected String nullToEmpty(String str) {
.orElse("");
}

protected void processExecutions(List<PluginExecution> bndMavenPluginExecutions, Plugin mavenPackagingPlugin, MavenProject project) {
protected void processExecutions(List<PluginExecution> 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<String> 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);
}
});
});
Expand Down

0 comments on commit 815cb77

Please sign in to comment.