使用maven-assembly-plugin创建一个大的zip程序集

guz6ccqo  于 9个月前  发布在  Maven
关注(0)|答案(5)|浏览(152)

我在使用maven-assembly-plugin创建一个更大的zip程序集时遇到了问题(未压缩占用超过3GB)。在构建输出zip文件时出现了问题(压缩小于1GB)。运行maven并选择-e会给我更详细的信息:

[INFO] Building zip: xxx/HG19-UCSC-dist.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12:40.199s
[INFO] Finished at: Wed Oct 02 11:08:44 BST 2013
[INFO] Final Memory: 13M/723M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (make-assembly) on project HG19: Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single failed: invalid entry size -> [Help 1]
...
...
...
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single failed: invalid entry size
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:115)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 19 more
Caused by: java.lang.IllegalArgumentException: invalid entry size
    at java.util.zip.ZipEntry.setSize(ZipEntry.java:135)
    at org.codehaus.plexus.archiver.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:352)
    at org.codehaus.plexus.archiver.zip.ZipOutputStream.finish(ZipOutputStream.java:316)

字符串
环顾四周,我发现这个问题来自我的JDK/JRE(https://blogs.oracle.com/xuemingshen/entry/zip64_support_for_4g_zipfile)中缺少对Zip 64的支持,这是在2011年添加到OpenJDK的。
但是,我已经将我的JDK更新为Oracle提供的最新版本:

$ mvn -version
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 03:15:32+0100)
Maven home: /usr/local/apache-maven-3.1.0
Java version: 1.7.0_40, vendor: Oracle Corporation
Java home: /usr/local/java/jdk1.7.0_40/jre
Default locale: en_GB, platform encoding: ISO-8859-1
OS name: "linux", version: "2.6.32-279.2.1.el6.x86_64", arch: "amd64", family: "unix"


它再次报告了同样的问题。最新的Oracle JDK不支持Zip 64还是别的什么?
我想,我可以尝试从源代码构建OpenJDK b147,但除非不可避免,否则我想避免这样做。

56lgkhnf

56lgkhnf1#

**[编辑]这是一段时间,但我看到人们阅读这一点,所以FYI的问题已被修复,因为版本2.5的maven汇编插件。

我找到了罪魁祸首,所以报告这个问题只是为了保存别人的时间。
问题似乎出在org.codehaus.plexus.archiver.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:352)上,正如我的异常堆栈跟踪报告的那样。查看org.codehaus...ZipOutputStream.closeEntry的源代码,我可以看到:

entry.setSize( def.getTotalIn() );

字符串
defjava.util.zip.Deflater。然而,Deflater.getTotalIn返回int而不是long。相反,代码应该使用Deflater.getBytesRead(),我将向开发人员报告。

brc7rcf0

brc7rcf02#

遇到了同样的问题。在构建项目的jar时偶尔会拾取一个非常大(3GB)的日志文件,这导致了这个问题。文件被删除后没有错误,目标jar的大小恢复到10Mb以下。

x4shl7ld

x4shl7ld3#

正如我们所看到的here, (ZipEntry class),这在JDK 1.7中已经修复。
您已经展示了从命令行运行的mvn显示了JDK版本1.7。
你是否试图以同样的方式完成构建,我的意思是从命令行(而不是IDE,它可以使用另一个JDK for maven?)

t1rydlwq

t1rydlwq4#

我在使用shade插件时遇到了类似的问题(OP中的相同错误),这是由于在打包之前没有运行mvn clean造成的。

ecfdbz9o

ecfdbz9o5#

我来这里是因为我在构建时收到了“invalid entry size”的消息。然后我意识到我最近在src/main/resources中添加了不应该在构建中的大文件。这只是提醒那些可能处于这种情况下的人,这个错误“突然”出现;你可能包含了不应该包含的文件。

相关问题