场景
在使用 Maven Ant 任务 artifact:deploy
时,我遇到错误 java.lang.OutOfMemoryError: Java heap space
。
只有当部署的文件大小大于 25 MB 时,我才会收到错误消息。我的 Artifact 大小不超过 50 MB。
What could the reason be? And, what can I do to fix it?
代码片段
<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 脚本能够在任何计算机上运行并且不依赖环境变量。
Is there a way to configure these settings in the Ant scripts or the
POM
file?
编辑
install-provider
任务 (http://maven.apache.org/ant-tasks/examples/install-deploy.html) 似乎对某些人有用。我在使用它时不断收到下载错误。
回答
事实证明,当我在另一台计算机(可能分配给 JVM 堆的内存较多)上运行 Maven Ant 任务时,我没有遇到 Java 堆错误。因此,我没有尝试@Attila 提到的解决方案,尽管它似乎朝着正确的方向发展。
最佳答案
一旦 ant 运行,您就无法更改运行 ant 的 JVM 的堆大小。因此,唯一的选择是在单独的 JVM 中运行消耗大量内存的任务,并指定足够的堆空间。请注意,这依赖于允许您 fork 一个新的 JVM 来执行该任务的任务
更新:我找不到指定 fork maven(部署)任务的方法,但是 this page指定如何定义宏以使用 java 任务运行 Maven(请注意,这依赖于机器上安装并正确配置的 Maven)(请参阅“使用 Java 任务”部分)
关于Maven Ant 部署 - OutOfMemoryError : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11104978/