Uploaded image for project: 'Maven Shade Plugin'
  1. Maven Shade Plugin
  2. MSHADE-195

createSourcesJar with source:jar-no-fork causes sources.jar to be deployed twice, causing the build to fail

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.3, 2.4
    • 2.4.3
    • 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.

      Attachments

        1. MSHADE-195-example.zip
          5 kB
          Esko Luontola

        Issue Links

          Activity

            People

              schulte77 Christian Schulte
              orfjackal Esko Luontola
              Votes:
              3 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: