Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven Ant deploy-OutOfMemoryError:Java堆空间 脚本_Maven_Ant_Heap_Out Of Memory_Pom.xml - Fatal编程技术网

Maven Ant deploy-OutOfMemoryError:Java堆空间 脚本

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文件 编辑 安装提供程序任

在使用Maven Ant任务
工件: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>