Maven Ant deploy-OutOfMemoryError:Java堆空间 脚本
在使用Maven Ant任务Maven Ant deploy-OutOfMemoryError:Java堆空间 脚本,maven,ant,heap,out-of-memory,pom.xml,Maven,Ant,Heap,Out Of Memory,Pom.xml,在使用Maven Ant任务工件:deploy时,我遇到了错误java.lang.OutOfMemoryError:java堆空间 只有当正在部署的文件的大小大于25 MB时,才会出现错误。我的工件大小不超过50MB 原因可能是什么?还有,我能做些什么来修复它 代码片段 现有解决方案 大多数在线结果表明,这与JVM默认堆大小有关,可以通过设置适当的环境变量来固定 但是,我希望Ant脚本可以在任何计算机上运行,并且不依赖于环境变量 有没有办法在Ant脚本或 POM文件 编辑 安装提供程序任
工件:deploy
时,我遇到了错误java.lang.OutOfMemoryError:java堆空间
只有当正在部署的文件的大小大于25 MB时,才会出现错误。我的工件大小不超过50MB
原因可能是什么?还有,我能做些什么来修复它
代码片段
现有解决方案 大多数在线结果表明,这与JVM默认堆大小有关,可以通过设置适当的环境变量来固定 但是,我希望Ant脚本可以在任何计算机上运行,并且不依赖于环境变量 有没有办法在Ant脚本或
POM
文件
编辑
安装提供程序任务(http://maven.apache.org/ant-tasks/examples/install-deploy.html)似乎对某些人有用。当我使用它时,我不断地得到下载错误。
答复
事实证明,当我在另一台机器上运行Maven Ant任务时(可能有更多内存分配给JVM堆),我没有得到Java堆错误。因此,我没有尝试@Attila提到的解决方案,尽管它似乎朝着正确的方向发展。一旦ant运行,就不能更改运行ant的JVM的堆大小。因此,您唯一的选择是在单独的JVM中运行消耗大量内存的任务,并指定足够的堆空间。注意,这依赖于允许您派生新JVM来执行任务的任务
更新:我找不到一种方法来指定分叉maven(deploy)任务,但指定如何定义一个宏来使用java任务运行maven(注意,这依赖于机器上安装并正确配置的maven)(请参阅“使用java任务”部分)请尝试增加VM内存,例如:-Xmx512m
如果您使用的是ANT,可以将其添加到ANT_OPTS环境变量:ANT_OPTS=“-Xmx512m”我想要的东西不需要依赖于环境变量的更改。我的脚本应该能够在任何机器上运行,而无需更改机器环境配置。您可以尝试将其添加到bat文件中,例如:ANT_OPTS=“-Xmx512m”CALL ANT-q-f…批处理文件的问题是,它将特定于环境,也不是最干净的方法。我想知道是否可以向Ant脚本或POM文件添加任何内容。因此,您需要在运行时更改VM内存,但这是不可能的:)抱歉。大小不超过50MB的工件是否需要该选项?我假设可能有一种更简单的方法来处理它……根据所涉及的内容,构建有时会占用惊人的内存量——不幸的是,我不熟悉maven任务,所以不知道是否有更简单的方法
<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>