-->

创建Maven的组装插件的大型组装拉链(Create a large zip assembly wi

2019-10-18 17:34发布

我在与创建较大拉链组件(未压缩接管3GB)使用maven组装-插件的问题。 构建输出zip文件(超过1GB压缩更少)时会出现问题。 运行带有选项行家-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(失踪ZIP64支持https://blogs.oracle.com/xuemingshen/entry/zip64_support_for_4g_zipfile其中加入了OpenJDK 2011年)。

不过,我已经更新了我的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有ZIP64不支持,或者别的东西?

我想,我可以尝试从源代码建立的OpenJDK B147,但想避免,除非是不可避免的。

Answer 1:

我找到了罪魁祸首,所以报告的问题只是给别人节省时间。

看来这个问题在规定org.codehaus.plexus.archiver.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:352)作为我的异常堆栈跟踪报道。 纵观来源org.codehaus...ZipOutputStream.closeEntry我可以看到:

entry.setSize( def.getTotalIn() );

defjava.util.zip.Deflater 。 然而, Deflater.getTotalIn回报intlong 。 相反,代码应使用Deflater.getBytesRead()我敢给开发商会报告。

[编辑]这已经有一段时间,但我看到有人读这篇文章,所以自版本FYI的问题已得到修复2.5 Maven的组装插件。



Answer 2:

遇到了同样的问题。 建设项目的罐子时,一个非常大的(3GB)日志文件被偶然捡到了,这引起了问题。 该文件后没有错误已被删除,目标罐子的大小是回为10Mb下。



Answer 3:

我们可以看到在这里,(类ZipEntry) ,这已被固定在JDK 1.7。

你已经证明,你mvn运行命令行显示的JDK版本1.7。

你是不是想以同样的方式来完成的身材,我命令行平均(而不是IDE,它可以使用另一个JDK Maven的?)



Answer 4:

我使用的时候也有类似的问题(在OP同样的错误) shade ,是由不运行插件引起mvn clean包装前。



文章来源: Create a large zip assembly with maven-assembly-plugin