2015-05-12 12 views
9

Maven-Schatten-Plugin laufen, muss ich Methode verwenden, beschrieben here aufgrund Abhängigkeiten unterzeichnet, wie hier gezeigt:Wie kann ich feststellen, welches signierte jar das maven-shade-plugin zum scheitern bringt?

<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> 

Frage : Wie kann ich sagen, welche JAR verursacht das Plugin zum Scheitern verurteilt? Es scheint nicht der zuletzt erwähnte zu sein.

Tail of Debug-Ausgabe:

[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

haben Sie versucht, mit der Option -X zu bauen? –

+1

Ja; Das erzeugt die angezeigte Debug-Ausgabe. – jordanpg

Antwort

3

Der Schatten Plugin alle die Gläser für die Abhängigkeiten entpackt Sie aufgenommen haben und ihren Inhalt in einer einzigen JAR-Datei zu stopfen. So, als ob du alles selbst geschrieben hättest.

Die Konfiguration weist das Schatten-Plugin an, keine Dateien zu verschieben, die in .SF, .DSA oder .RSA enden, wenn sie in einem Verzeichnis namens META-INF enthalten sind.

Also alles, was Sie tun müssen, ist herauszufinden, welches Glas diese Dateien hat.

Das erste, was ich tun würde, ist den Filter Abschnitt auskommentieren und neu zu bauen. Dann grep Ihr ​​schattiertes Glas für diese Erweiterungen. Es könnte Ihnen einen Hinweis auf das Paket geben.

Die Option -t des Befehls jar listet alle Dateien im Archiv auf, ohne sie zu extrahieren. Im Allgemeinen ist jar syntax sehr ähnlich zu tar.

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

META-INF/BCKEY.DSA 

In meinem Fall war es ziemlich offensichtlich. Ich hatte kürzlich Bouncy Castle als eine Abhängigkeit hinzugefügt. BCKEY.DSA scheint, als wäre es der Bouncy Castle Key.

Um zu bestätigen, habe ich gerade die gleiche Aktion auf dem Hüpfburgglas durchgeführt. Da ich dies mit Maven erstellt habe, ist das Glas in meinem lokalen Repository:

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

"Dann grep Ihr ​​schattiertes Glas für diese Erweiterungen. Es könnte Ihnen einen Hinweis auf das Paket geben." ... leider ist es komplett leer – Subcomandante

+0

Das gleiche hier - schattiertes Glas ist leer, kein Unterschied, ob der Filterabschnitt aktiv ist oder nicht. Unshaded jar enthält keine Signaturdateien. Abgesehen davon lässt mich diese Antwort nicht wissen, wie das Problem zu beheben ist. – not2savvy

Verwandte Themen