Hi,
After diving into the above issue i stumbled over several things...
If you take a look here and the log output excerpt:
INFO] Minimized 2341 -> 1293
[INFO] Minimized 3282 -> 2234
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing
/Users/kama/ws-git/apache/mshade/mshade-195/target/MSHADE-195-example-1-SNAPSHOT.jar
with
/Users/kama/ws-git/apache/mshade/mshade-195/target/MSHADE-195-example-1-SNAPSHOT-shaded.jar
[INFO] Replacing original source artifact with shaded source artifact.
[INFO] Replacing
/Users/kama/ws-git/apache/mshade/mshade-195/target/MSHADE-195-example-1-SNAPSHOT-sources.jar
with
/Users/kama/ws-git/apache/mshade/mshade-195/target/MSHADE-195-example-1-SNAPSHOT-shaded-sources.jar
[INFO] Dependency-reduced POM written at:
/Users/kama/ws-git/apache/mshade/mshade-195/dependency-reduced-pom.xml
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @
MSHADE-195-example ---
[INFO] Installing
/Users/kama/ws-git/apache/mshade/mshade-195/target/MSHADE-195-example-1-SNAPSHOT.jar
to
/Users/kama/.m2/repository/com/example/MSHADE-195-example/1-SNAPSHOT/MSHADE-195-example-1-SNAPSHOT.jar
[INFO] Installing
/Users/kama/ws-git/apache/mshade/mshade-195/dependency-reduced-pom.xml
to
/Users/kama/.m2/repository/com/example/MSHADE-195-example/1-SNAPSHOT/MSHADE-195-example-1-SNAPSHOT.pom
[INFO] Installing
/Users/kama/ws-git/apache/mshade/mshade-195/target/MSHADE-195-example-1-SNAPSHOT-sources.jar
to
/Users/kama/.m2/repository/com/example/MSHADE-195-example/1-SNAPSHOT/MSHADE-195-example-1-SNAPSHOT-sources.jar
[INFO] Installing
/Users/kama/ws-git/apache/mshade/mshade-195/target/MSHADE-195-example-1-SNAPSHOT-sources.jar
to
/Users/kama/.m2/repository/com/example/MSHADE-195-example/1-SNAPSHOT/MSHADE-195-example-1-SNAPSHOT-sources.jar
[INFO]
Install plugin tries to install two identical artifacts which will work
for maven-install-plugin but would fail for a deploy to a repository
manager (releases? etc.
So after diving into the problem i found the following code in
maven-core (MavenProject.java):
/**
* Add or replace an artifact. This method is now deprecated. Use
the @{MavenProjectHelper} to attach artifacts to a
* project. In spite of the 'throws' declaration on this API, this
method has never thrown an exception since Maven
* 3.0.x. Historically, it logged and ignored a second addition of
the same g/a/v/c/t. Now it replaces the file for
* the artifact, so that plugins (e.g. shade) can change the
pathname of the file for a particular set of
* coordinates.
*
* @param artifact the artifact to add or replace.
* @throws DuplicateArtifactAttachmentException
*/
public void addAttachedArtifact( Artifact artifact )
throws DuplicateArtifactAttachmentException
{
getAttachedArtifacts().add( artifact );
}
public List<Artifact> getAttachedArtifacts()
{
if ( attachedArtifacts == null )
{
attachedArtifacts = new ArrayList<>();
}
return attachedArtifacts;
}
So taking a look into MavenProjectHelper.java and the implementation
(DefaultMavenProjectHelper.java).
/**
* Add an attached artifact or replace the file for an existing
artifact.
*
* @see
MavenProject#addAttachedArtifact(org.apache.maven.artifact.Artifact)
* @param project project reference.
* @param artifact artifact to add or replace.
*/
public void attachArtifact( MavenProject project, Artifact artifact )
{
project.addAttachedArtifact( artifact );
}
which means that there is not check if an artifacts is already attached.
This means two things from my point of view:
Change the maven-core (checking for duplicate attaches) and furthermore
plugins which are adding this should check themself if the artifact
already exist?
WDYT ? Better idea/suggestions ?
Kind regards
Karl Heinz Marbaise
https://issues.apache.org/jira/browse/MNG-5868
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]