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 スクリプトを任意のコンピューターで実行し、環境変数に依存しないようにしたいと考えています。

POMAnt スクリプトまたはファイルでこれらの設定を構成する方法はあり ますか?

編集

install-providerタスク (http://maven.apache.org/ant-tasks/examples/install-deploy.html) は一部の人には有効なようです。使用中にダウンロードエラーが発生し続けます。


答え

Maven Ant タスクを別のマシン (JVM ヒープにより多くのメモリが割り当てられている可能性があります) で実行すると、Java ヒープ エラーが発生しないことがわかりました。したがって、@Attila が言及した解決策は試していませんが、正しい方向に進んでいるようです。

4

2 に答える 2

1

Ant が実行されると、JVM 実行 Ant のヒープ サイズを変更することはできません。したがって、唯一のオプションは、十分なヒープ領域を指定して、別の JVM で大量のメモリを消費するタスクを実行することです。これはタスクに依存しているため、新しい JVM をフォークしてタスクを実行できることに注意してください。

更新: Maven (デプロイ) タスクをフォークするように指定する方法が見つかりませんでしたが、このページでは、 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 に答える