使用 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提到的解决方案,尽管它似乎正朝着正确的方向发展。
答案 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”