Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.3, 2.4
-
None
Description
The workaround described in https://issues.apache.org/jira/browse/MSHADE-120 (i.e. running maven-source-plugin's jar-no-fork goal before shading) causes the problem that Maven will install and deploy the same sources.jar file twice:
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ pricing-client --- [INFO] Installing xxx/pricing-client/target/pricing-client-0-SNAPSHOT.jar to xxx/pricing-client/0-SNAPSHOT/pricing-client-0-SNAPSHOT.jar [INFO] Installing xxx/pricing-client/target/dependency-reduced-pom.xml to xxx/pricing-client/0-SNAPSHOT/pricing-client-0-SNAPSHOT.pom [INFO] Installing xxx/pricing-client/target/pricing-client-0-SNAPSHOT-sources.jar to xxx/pricing-client/0-SNAPSHOT/pricing-client-0-SNAPSHOT-sources.jar [INFO] Installing xxx/pricing-client/target/pricing-client-0-SNAPSHOT-sources.jar to xxx/pricing-client/0-SNAPSHOT/pricing-client-0-SNAPSHOT-sources.jar
With maven-install-plugin this doesn't matter that much, but with maven-deploy-plugin it fails the build, because it tries to upload the sources.jar twice to the Maven repository and Nexus doesn't allow that:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project project: Failed to deploy artifacts: Could not transfer artifact xxx.availability:availability-client:jar:sources:1.0.24 from/to xxx-releases (http://xxx/nexus/content/repositories/releases): Failed to transfer file: http://xxx/nexus/content/repositories/releases/xxxx/availability/availability-client/1.0.24/availability-client-1.0.24-sources.jar. Return code is: 400, ReasonPhrase: Bad Request.
I'm suspecting this to be something like the maven-source-plugin and maven-shade-plugin both attaching the same sources.jar to the build, when only one of them should do it. This problem only happens with the sources jar and not the main artifact, so a trick similar to replacing the main artifact is needed also for the sources jar.
Workaround
Configure maven-source-plugin with <attach>false</attach>. Then the shade plugin will find the sources and include them in the shaded sources jar, but the sources jar won't be attached to the build twice.