2015-05-12 11 views
9

Per eseguire Maven-ombra-plugin, devo usare il metodo descritto here a causa di dipendenze firmati, come illustrato di seguito:Come posso sapere quale jar firmato sta causando il fallimento di maven-shade-plugin?

<plugin> 
    <artifactId>maven-shade-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals><goal>shade</goal></goals> 
      <configuration> 
       <filters> 
        <filter> 
         <!-- filter out signature files from signed dependencies, else repackaging fails with security ex --> 
         <artifact>*:*</artifact> 
         <excludes> 
          <exclude>META-INF/*.SF</exclude> 
          <exclude>META-INF/*.DSA</exclude> 
          <exclude>META-INF/*.RSA</exclude> 
         </excludes> 
        </filter> 
       </filters> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Domanda: Come posso sapere che JAR causato il plugin per fallire? Non sembra essere il più recente.

coda di output di debug:

[DEBUG] We have a duplicate org/jdom2/xpath/util/AbstractXPathCompiled.class in C:\Users\me\aaaa-1.11.0-SNAPSHOT.jar 
[DEBUG] We have a duplicate org/jdom2/xpath/util/XPathDiagnosticImpl.class in C:\Users\me\aaaa-1.11.0-SNAPSHOT.jar 
[DEBUG] Processing JAR C:\Users\me\bbbb-1.11.0-SNAPSHOT.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] Retrievers JAR ................................ FAILURE [ 9.581 s] 
[INFO] Retrievers .................................... SKIPPED 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 10.208 s 
[INFO] Finished at: 2015-05-12T14:20:54-05:00 
[INFO] Final Memory: 100M/726M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.3:shade (default) on project aaa-retrievers-jar: Error creating shaded jar: Invalid signature file digest for Manifest main attributes -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.3:shade (default) on project aaa-retrievers-jar: Error creating shaded jar: Invalid signature file digest for Manifest main attributes 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76) 
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:157) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar: Invalid signature file digest for Manifest main attributes 
    at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:566) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
    ... 19 more 
Caused by: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:284) 
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:238) 
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:316) 
    at java.util.jar.JarVerifier.update(JarVerifier.java:228) 
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:383) 
    at java.util.jar.JarFile.getInputStream(JarFile.java:450) 
    at org.apache.maven.plugins.shade.DefaultShader.shade(DefaultShader.java:147) 
    at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:471) 
    ... 21 more 
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 
+0

hai provato a costruire con l'opzione -X? –

+1

Sì; questo è ciò che produce l'output di debug mostrato. – jordanpg

risposta

3

La tonalità plugin è disfacendo tutti i vasi per le dipendenze che hai incluso e ripieno loro contenuti in un unico file jar. Un po 'come se avessi scritto tutto da solo.

La configurazione sta dicendo al plug-in dell'ombra di non spostare alcun file che finisca in .SF, .DSA o .RSA se sono inclusi in una directory chiamata META-INF.

Quindi tutto quello che dovete fare è capire quale jar ha quei file.

La prima cosa che vorrei fare è commentare la sezione filtro e ricostruire. Quindi svuota il tuo barattolo ombreggiato per quelle estensioni. Potrebbe darti un'idea del pacchetto.

L'opzione -t sul comando jar elenca tutti i file nell'archivio senza estrarli. In generale la sintassi del jar è molto simile a tar.

jar -tvf target/myapp-1.0.3-SNAPSHOT.jar | grep -i dsa 

META-INF/BCKEY.DSA 

Nel mio caso era abbastanza ovvio. Di recente avevo aggiunto Bouncy Castle come dipendenza. BCKEY.DSA sembra che potrebbe essere la chiave del castello gonfiabile.

Per confermare ho appena eseguito la stessa azione sul vaso rimbalzante del castello. Dal momento che l'ho creato con maven, il jar è nel mio repository locale:

tar -tvf .m2/repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar | grep -i dsa 
-rwxrwxrwx 0 0  0   0 Feb 9 2013 META-INF/BCKEY.DSA 
+1

"Quindi grep il tuo barattolo ombreggiato per quelle estensioni.Potrebbe darti un'idea del pacchetto." ... sfortunatamente è completamente vuoto – Subcomandante

+0

Lo stesso qui: il barattolo ombreggiato è vuoto, nessuna differenza se la sezione del filtro è attiva o meno. Il vaso non ombreggiato non contiene alcun file di firma. Oltre a ciò, questa risposta mi lascia senza alcuna idea su come correggere il problema. – not2savvy

Problemi correlati