Maven-assembly-plugin在GC超过限制时失败

7
我有一个多模块的maven项目。其中一个模块使用了maven-assembly-plugin。在整个项目上运行mvn clean install时,构建会失败并显示GC Overhead limit exceeded错误。
我正在使用maven 3.3.9(也尝试过3.2.2)。maven-assembly-plugin的版本是2.5.5(也尝试过2.6)。这是插件的配置:
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <id>dist-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <classifier>all</classifier>                 
        <finalName>${project.artifactId}-${project.version}-all</finalName>
        <attach>false</attach>
        <appendAssemblyId>false</appendAssemblyId>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib</classpathPrefix>
                <mainClass>...my main class...</mainClass>
            </manifest>
            <manifestEntries>
                <Implementation-Build>${buildNumber}</Implementation-Build>
            </manifestEntries>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

我甚至设置了MAVEN_OPTS如下,但没有帮助:

MAVEN_OPTS="-Xms2048m -Xmx4096m -XX:PermSize=1024m"

最后一个失败前的信息为:
Cleaning up unclosed ZipFile for archive .../.m2/repository/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar

我遇到了一个几乎相同的问题(在添加bouncycastle库时失败),但只有当程序集作为完整构建的一部分运行时才会出现。如果我单独运行程序集,它就不会失败。你解决了这个问题吗? - Forge_7
很遗憾,情况正如您所描述的那样。完整构建失败,但仅对包含程序集的一个模块进行构建时则不会失败。 - Filip Majernik
以为用了 -d64 开关就可以了,结果发现我从GIT还原的比我想象中的要多:( - Forge_7
2个回答

4

我升级到maven-assembly-plugin 3.2.0版本,问题得到解决,并且构建速度显著加快。

  <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>3.2.0</version>
     .....

1

我也遇到了完全相同的问题,通过将最大堆空间增加到-Xmx6g,我成功解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接