Maven Ant部署 - OutOfMemoryError:Java堆空间

时间:2012-06-19 16:07:41

标签: maven ant heap out-of-memory pom.xml

方案

使用 Maven Ant任务 artifact:deploy时,我遇到错误java.lang.OutOfMemoryError: Java heap space

如果要部署的文件大小超过25 MB,我只会收到错误。我的工件大小不超过50 MB。

  

原因是什么?而且,我该怎么做才能解决它?

<小时/>

代码段

        <artifact:deploy file="@{app.name}.jar">
            <pom file="@{pom.file}"/>               

            <remoteRepository url="http://xxx.com:xxx/xxx-webapp/content/repositories/xxx-releases/">
                <authentication username="xxx" password="xxx" />
            </remoteRepository>
        </artifact:deploy>

<小时/>

现有解决方案

大多数在线结果表明它与 JVM默认堆大小有关,可以通过设置相应的环境变量来修复。

但是,我希望Ant脚本可以在任何计算机上运行,​​并且不依赖来处理环境变量。

  

有没有办法在Ant脚本中配置这些设置   POM档案?

修改

install-provider任务(http://maven.apache.org/ant-tasks/examples/install-deploy.html)似乎适用于某些人。我使用它时不断出现下载错误。

<小时/>

答案

事实证明,当我在另一台机器(可能有更多内存分配给JVM堆)上运行我的Maven Ant任务时,我没有 Java堆错误。因此,我没有尝试@Attila提到的解决方案,尽管它似乎正朝着正确的方向发展。

2 个答案:

答案 0 :(得分:1)

一旦ant运行,就无法更改JVM运行ant的堆大小。因此,您唯一的选择是运行在单独的JVM中包含大量内存的任务,指定足够的堆空间。请注意,这依赖于允许您 fork 新JVM来执行任务的任务

更新:我找不到指定分叉maven(部署)任务的方法,但是this page指定了如何定义宏以使用运行maven java 任务(请注意,这依赖于在计算机上安装并正确配置的maven beeing)(请参阅“使用Java任务”部分)

答案 1 :(得分:1)

请尝试增加VM内存,例如:-Xmx512m 如果您使用的是ANT,则可以将其添加到ANT_OPTS环境变量中:ANT_OPTS =“ - Xmx512m”