Closed mgenov closed 11 years ago
Can you attach a complete pom.xml that demonstrates the issue? Thanks in advance.
Yeah. Here is my pom.xml.
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>myproject</artifactId>
<version>1.0-SNAPSHOT</version>
<name>myproject</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- DI (Guice related dependencies)-->
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-servlet</artifactId>
<version>3.0</version>
</dependency>
<!-- Utility dependencies -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>14.0.1</version>
</dependency>
<!-- HTTP Server Dependencies -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>8.1.8.v20121106</version>
</dependency>
<!-- Logging Dependencies -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.30</version>
</dependency>
<!-- Testing Libraries -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock</artifactId>
<version>2.6.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
<version>2.6.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.8.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xxx.xxx.xxx.Bootstrap</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>jarjar-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jarjar</goal>
</goals>
<configuration>
<includes>
<include>javax.inject:javax.inject</include>
<include>ch.qos.logback:logback-classic</include>
<include>aopalliance:aopalliance</include>
<include>com.google.guava:guava</include>
<include>com.google.inject:guice</include>
<include>com.google.inject.extensions:guice-servlet</include>
<include>ch.qos.logback:logback-core</include>
<include>org.slf4j:slf4j-api</include>
<include>org.eclipse.jetty.orbit:javax.servlet</include>
<include>org.eclipse.jetty:jetty-server</include>
<include>org.eclipse.jetty:jetty-servlet</include>
<include>org.eclipse.jetty:jetty-http</include>
<include>org.eclipse.jetty:jetty-util</include>
<include>org.eclipse.jetty:jetty-continuation</include>
<include>org.eclipse.jetty:jetty-security</include>
</includes>
<rules>
<rule>
<pattern>org.objectweb.asm.**</pattern>
<result>com.google.inject.internal.asm.@1</result>
</rule>
<rule>
<pattern>net.sf.cglib.**</pattern>
<result>com.google.inject.internal.cglib.@1</result>
</rule>
<keep>
<pattern>com.xxx.**</pattern>
</keep>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
FYI, an exception in the finally block of StandaloneJarProcessor was hiding the true cause:
java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:219)
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:174)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:288)
at java.util.jar.JarVerifier.update(JarVerifier.java:199)
at java.util.jar.JarFile.initializeVerifier(JarFile.java:327)
at java.util.jar.JarFile.getInputStream(JarFile.java:395)
at com.tonicsystems.jarjar.util.StandaloneJarProcessor.run(StandaloneJarProcessor.java:46)
at com.tonicsystems.jarjar.JarJarMojo.execute(JarJarMojo.java:223)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
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:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Which makes more sense - I'll look into handling this and improve the error reporting at the same time.
Made sure the original cause was not hidden in d3f8e05c4330a051fe2dd75a6ce5e63d419531fb
Fixed in e8ce1f6fb94dcf2a7ea959cd49dbdc587bf3a818 - can you try the 1.8-SNAPSHOT locally to confirm this works for you?
Works fine. Thanks.
I've just staged and released 1.8 with this bugfix; should be available from central later today.
I'm trying to include dependency javax.servlet dependency and it seems that jarjar-maven-plugin is failing to package it.
jajar-maven-plugin - version - 7.0
and this is the include line:
Here is the stack trace: Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to JarJar: /target/myapp-1.0-SNAPSHOT.jar cause: ZIP file must have at least one entry at com.tonicsystems.jarjar.JarJarMojo.execute(JarJarMojo.java:256) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 19 more Caused by: java.util.zip.ZipException: ZIP file must have at least one entry at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:304) at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:140) at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:321) at com.tonicsystems.jarjar.util.StandaloneJarProcessor.run(StandaloneJarProcessor.java:66) at com.tonicsystems.jarjar.JarJarMojo.execute(JarJarMojo.java:223) ... 21 more
Where when I remove this line, everything is packaging like a charm.