Skip to content

Commit

Permalink
[MNG-8180] Back out from failing the build (#1642)
Browse files Browse the repository at this point in the history
Just warn for now, we cannot go from builds-ok w/
3.9.8 to fails-the-build in 3.9.9. Warning
can raise awareness, and this pattern is bad as
it is, but users now become aware that they may
have rogue plugin.xml (just like maven-compat had).

The original bug is fixed (Maven deploys unrelated metadata).

Same change is to be ported to master as well.

---

https://issues.apache.org/jira/browse/MNG-8180
  • Loading branch information
cstamas authored Aug 12, 2024
1 parent f2135c1 commit 38a128f
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 110 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
import org.eclipse.aether.installation.InstallRequest;
import org.eclipse.aether.metadata.Metadata;
import org.eclipse.aether.util.ConfigUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Maven G level metadata generator.
Expand All @@ -51,6 +53,8 @@
class PluginsMetadataGenerator implements MetadataGenerator {
private static final String PLUGIN_DESCRIPTOR_LOCATION = "META-INF/maven/plugin.xml";

private final Logger logger = LoggerFactory.getLogger(getClass());

private final Map<Object, PluginsMetadata> processedPlugins;

private final Date timestamp;
Expand Down Expand Up @@ -142,20 +146,20 @@ private PluginInfo extractPluginInfo(Artifact artifact) {
// here groupId and artifactId cannot be null
return new PluginInfo(groupId, artifactId, goalPrefix, name);
} else {
throw new InvalidArtifactPluginMetadataException(
"Artifact " + artifact.getGroupId() + ":"
+ artifact.getArtifactId()
+ " JAR (to be installed/deployed) contains Maven Plugin metadata for plugin "
+ groupId + ":" + artifactId + "; coordinates are conflicting. "
+ "Most probably your JAR contains rogue Maven Plugin metadata, "
+ "possible causes may be: shaded in Maven Plugin or some rogue resource)");
logger.warn(
"Artifact {}:{}"
+ " JAR (about to be installed/deployed) contains Maven Plugin metadata for"
+ " conflicting coordinates: {}:{}."
+ " Your JAR contains rogue Maven Plugin metadata."
+ " Possible causes may be: shaded into this JAR some Maven Plugin or some rogue resource.",
artifact.getGroupId(),
artifact.getArtifactId(),
groupId,
artifactId);
}
}
}
} catch (Exception e) {
if (e instanceof InvalidArtifactPluginMetadataException) {
throw (InvalidArtifactPluginMetadataException) e;
}
// here we can have: IO. ZIP or Plexus Conf Ex: but we should not interfere with user intent
}
}
Expand All @@ -170,10 +174,4 @@ private static String mayGetChild(Xpp3Dom node, String child) {
}
return null;
}

public static final class InvalidArtifactPluginMetadataException extends IllegalArgumentException {
InvalidArtifactPluginMetadataException(String s) {
super(s);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,15 @@
*/
package org.apache.maven.repository.internal;

import java.nio.file.Files;
import java.util.Arrays;
import java.util.List;

import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.collection.CollectRequest;
import org.eclipse.aether.collection.CollectResult;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.DependencyNode;
import org.eclipse.aether.installation.InstallRequest;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
import org.eclipse.aether.resolution.ArtifactDescriptorResult;
import org.eclipse.aether.resolution.ArtifactRequest;
Expand Down Expand Up @@ -197,29 +193,4 @@ public void testNewLocalRepositoryManager() throws Exception {
public void testNewSyncContext() throws Exception {
// SyncContext newSyncContext( RepositorySystemSession session, boolean shared );
}

public void testRoguePlugin() throws Exception {
Artifact artifact = new DefaultArtifact("ut.simple:rogue-plugin:1.0");

ArtifactRequest artifactRequest = new ArtifactRequest();
artifactRequest.setArtifact(artifact);
artifactRequest.addRepository(newTestRepository());

ArtifactResult artifactResult = system.resolveArtifact(session, artifactRequest);
checkArtifactResult(artifactResult, "rogue-plugin-1.0.jar");

InstallRequest installRequest = new InstallRequest();
installRequest.addArtifact(artifactResult.getArtifact());

DefaultRepositorySystemSession loc = new DefaultRepositorySystemSession(session);
loc.setLocalRepositoryManager(system.newLocalRepositoryManager(
session, new LocalRepository(Files.createTempDirectory("local").toFile())));
try {
system.install(loc, installRequest);
fail("install should fail");
} catch (Exception e) {
assertTrue(e instanceof PluginsMetadataGenerator.InvalidArtifactPluginMetadataException);
assertTrue(e.getMessage().contains("coordinates are conflicting"));
}
}
}
Binary file not shown.

This file was deleted.

This file was deleted.

0 comments on commit 38a128f

Please sign in to comment.