2

设想

在使用Maven Ant Task 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)似乎对某些人有用。我在使用它时不断收到下载错误。


回答

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

4

2 回答 2

1

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

更新:我找不到指定 fork maven (deploy) 任务的方法,但是这个页面指定了如何定义一个宏来使用java任务运行 maven(请注意,这依赖于安装和正确配置的 maven beeing机器)(参见“使用 Java 任务”部分)

于 2012-06-19T16:12:25.907 回答
1

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

于 2012-06-19T16:13:52.410 回答