Maven Ant 部署 - OutOfMemoryError : Java heap space

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

场景

在使用 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/

相关文章:

C:从内存运行机器码

maven - 您在哪里托管 Bamboo CI 项目站点?

java - Jenkins :java.io.IOException:文件名、目录名或卷标语法不正确

java - Android 位图内存不足

java.exe 未被识别为内部或外部命令

java - 如何正确地将javamail和激活依赖项添加到ant build.xml文件中?

Android处理图像处理时的内存不足异常

Maven:发布插件在 <distributionManagement> 中看不到我的 <repository>

maven - 在多模块 Maven 项目中在哪里定义属性?

java - Maven项目依赖Ant项目