Maven Shade Plugin
  1. Maven Shade Plugin
  2. MSHADE-75

Package maven multimodule project with shade plugin : error in opening zip on directory

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.3.1
    • Fix Version/s: 1.7
    • Labels:
    • Environment:
      Ubuntu 9.04 - Jaunty Jackalope -, Eclispse (Galileo), java 1.6.0_16
    • Flags:
      Patch

      Description

      Hello,

      I make a maven aggregator project with two modules.
      The first module is a dependency of the second.
      The first module is build with the install goal.
      The second with the shade plugin during the package phase.
      The first module build runs successfully and install resulting jar file in the maven local repository.
      The second module build fails with this error :

      [INFO] ------------------------------------------------------------------------
      [ERROR] BUILD ERROR
      [INFO] ------------------------------------------------------------------------
      [INFO] Error creating shaded jar: error in opening zip file /home/yoann/workspace/maven.1265640716107/trunk/tcx-ws-client/module1/target/classes
      
      [INFO] ------------------------------------------------------------------------
      [INFO] For more information, run Maven with the -e switch
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 10 seconds
      [INFO] Finished at: Fri Feb 12 10:39:29 CET 2010
      [INFO] Final Memory: 59M/583M
      [INFO] ------------------------------------------------------------------------

      It's due to the shade plugin whose tries to reference first module classes from target/classes repository instead of the jar file previously build.
      Therefore, it seems that the shade plugin doesn't work with a maven multimodules project.

      I manage to build my maven aggregator project by applying the attached patch (patch-maven-shade-plugin.txt) on the class ShadeMojo.java

      1. patch-maven-shade-plugin.txt
        1 kB
        Yoann Yonnet
      2. pom.xml
        0.9 kB
        Stephanos Piperoglou

        Issue Links

          Activity

          Hide
          Benjamin Bentmann added a comment -

          What Maven version was used for the build?

          Show
          Benjamin Bentmann added a comment - What Maven version was used for the build?
          Hide
          Yoann Yonnet added a comment -

          I use Maven 2.1.0 and the m2eclipse plugin installed from the following Eclipse update URL : http://m2eclipse.sonatype.org/update/

          Show
          Yoann Yonnet added a comment - I use Maven 2.1.0 and the m2eclipse plugin installed from the following Eclipse update URL : http://m2eclipse.sonatype.org/update/
          Hide
          Stefan Rufer added a comment -

          Similar effect for me, but not exactly as described above: It seems that the shade plugin tries to include the target/classes directory of the module for which it was started:

          srufer@legolas:~/Documents/ws-titrakk/sixtrakk-client-remoting$ mvn clean package

          [INFO] [jar:jar

          {execution: default-jar}

          ]
          [INFO] Building jar: /home/srufer/Documents/ws-titrakk/sixtrakk-client-remoting/target/sixtrakk-client-1.0.1-SNAPSHOT-nctest.jar
          ...
          [INFO] [shade:shade

          {execution: default}

          ]
          ...
          [INFO] Including commons-codec:commons-codec:jar:1.2 in the shaded jar.
          [INFO] ------------------------------------------------------------------------
          [ERROR] BUILD ERROR
          [INFO] ------------------------------------------------------------------------
          [INFO] Error creating shaded jar: error in opening zip file /home/srufer/Documents/ws-titrakk/sixtrakk-client-remoting/target/classes

          [INFO] ------------------------------------------------------------------------
          [INFO] For more information, run Maven with the -e switch
          [INFO] ------------------------------------------------------------------------
          [INFO] Total time: 8 seconds
          [INFO] Finished at: Fri Feb 26 23:59:57 CET 2010
          [INFO] Final Memory: 24M/153M
          [INFO] ------------------------------------------------------------------------
          srufer@legolas:~/Documents/ws-titrakk/sixtrakk-client-remoting$

          However, if I comment out the classifier tag of the maven-jar-plugin in my pom.xml, it builds the shaded JAR without complaints. Is the shade plugin being confused by this?

          <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <configuration>
          <!--
          <classifier>$

          {env.name}

          </classifier>
          -->
          </configuration>
          </plugin>

          Maven 2.2.1, Java 1.6.0_16, maven-shade-plugin 1.3.1

          Show
          Stefan Rufer added a comment - Similar effect for me, but not exactly as described above: It seems that the shade plugin tries to include the target/classes directory of the module for which it was started: srufer@legolas:~/Documents/ws-titrakk/sixtrakk-client-remoting$ mvn clean package [INFO] [jar:jar {execution: default-jar} ] [INFO] Building jar: /home/srufer/Documents/ws-titrakk/sixtrakk-client-remoting/target/sixtrakk-client-1.0.1-SNAPSHOT-nctest.jar ... [INFO] [shade:shade {execution: default} ] ... [INFO] Including commons-codec:commons-codec:jar:1.2 in the shaded jar. [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Error creating shaded jar: error in opening zip file /home/srufer/Documents/ws-titrakk/sixtrakk-client-remoting/target/classes [INFO] ------------------------------------------------------------------------ [INFO] For more information, run Maven with the -e switch [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8 seconds [INFO] Finished at: Fri Feb 26 23:59:57 CET 2010 [INFO] Final Memory: 24M/153M [INFO] ------------------------------------------------------------------------ srufer@legolas:~/Documents/ws-titrakk/sixtrakk-client-remoting$ However, if I comment out the classifier tag of the maven-jar-plugin in my pom.xml, it builds the shaded JAR without complaints. Is the shade plugin being confused by this? <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <!-- <classifier>$ {env.name} </classifier> --> </configuration> </plugin> Maven 2.2.1, Java 1.6.0_16, maven-shade-plugin 1.3.1
          Hide
          Olivier Lamy (*$^¨%`£) added a comment -

          I have added an it test and cannot reproduce. Could you please provide a sample project which reproduce your issue ? Thanks

          Show
          Olivier Lamy (*$^¨%`£) added a comment - I have added an it test and cannot reproduce. Could you please provide a sample project which reproduce your issue ? Thanks
          Hide
          Stephanos Piperoglou added a comment -

          Here's a dirt simple test case, just a simple pom. Running this with Maven 2.2.1 gives me:

          [ERROR] BUILD ERROR
          [INFO] ------------------------------------------------------------------------
          [INFO] Error creating shaded jar: C:\dev\workspaces\indigo\mshade-75\target\classes (Access is denied)

          Show
          Stephanos Piperoglou added a comment - Here's a dirt simple test case, just a simple pom. Running this with Maven 2.2.1 gives me: [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Error creating shaded jar: C:\dev\workspaces\indigo\mshade-75\target\classes (Access is denied)
          Hide
          Stephanos Piperoglou added a comment -

          Specifically, the error arises when the maevn-jar-plugin has a classifier in its configuration.

          Show
          Stephanos Piperoglou added a comment - Specifically, the error arises when the maevn-jar-plugin has a classifier in its configuration.
          Hide
          Benson Margulies added a comment - - edited

          This is not a fix for the problem at hand. The patch doesn't change the behavior at all, it would apply to a case where a declared dependency had a classifier, and the fix would never work, either.

          Show
          Benson Margulies added a comment - - edited This is not a fix for the problem at hand. The patch doesn't change the behavior at all, it would apply to a case where a declared dependency had a classifier, and the fix would never work, either.
          Hide
          Benson Margulies added a comment -

          I claim that this case should not work, but it could 'not work' more politely.

          What you've done is disrupt the production of the project's main artifact. By adding a classifier to the default execution of the jar plugin, you've made the jar plugin create an attached artifact instead of the main 'jar' artifact. This leaves the project 'naked' and no longer producing a jar, and so shade is flummoxed. Arguably, this case should produce a diagnostic like the diagnostic for non-jar projects, and that's what I'm going to make it do. Then, I believe that you could exclude the project's main artifact from shade and ask for the classified one instead.

          Show
          Benson Margulies added a comment - I claim that this case should not work, but it could 'not work' more politely. What you've done is disrupt the production of the project's main artifact. By adding a classifier to the default execution of the jar plugin, you've made the jar plugin create an attached artifact instead of the main 'jar' artifact. This leaves the project 'naked' and no longer producing a jar, and so shade is flummoxed. Arguably, this case should produce a diagnostic like the diagnostic for non-jar projects, and that's what I'm going to make it do. Then, I believe that you could exclude the project's main artifact from shade and ask for the classified one instead.
          Hide
          Benson Margulies added a comment -

          Proper diagnosis added.

          Show
          Benson Margulies added a comment - Proper diagnosis added.
          Hide
          Benson Margulies added a comment -

          r1343119 | bimargulies | 2012-05-27 20:52:20 -0400 (Sun, 27 May 2012) | 3 lines

          MSHADE-75: Package maven multimodule project with shade plugin : error in opening zip on directory
          o detect and diagnose missing jar main artifact.

          ------------------------------------------------------------------------

          ------------------------------------------------------------------------
          r1343121 | bimargulies | 2012-05-27 21:01:53 -0400 (Sun, 27 May 2012) | 3 lines

          MSHADE-75: Package maven multimodule project with shade plugin : error in opening zip on directory
          o this was a dumb error in the work on -75 that I misattributed briefly.

          ------------------------------------------------------------------------

          Show
          Benson Margulies added a comment - r1343119 | bimargulies | 2012-05-27 20:52:20 -0400 (Sun, 27 May 2012) | 3 lines MSHADE-75 : Package maven multimodule project with shade plugin : error in opening zip on directory o detect and diagnose missing jar main artifact. ------------------------------------------------------------------------ ------------------------------------------------------------------------ r1343121 | bimargulies | 2012-05-27 21:01:53 -0400 (Sun, 27 May 2012) | 3 lines MSHADE-75 : Package maven multimodule project with shade plugin : error in opening zip on directory o this was a dumb error in the work on -75 that I misattributed briefly. ------------------------------------------------------------------------

            People

            • Assignee:
              Benson Margulies
              Reporter:
              Yoann Yonnet
            • Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development