2

私が取り組んでいるプロジェクトのPOMで、さまざまな依存関係とプラグインのバージョンを更新していました。更新の 1 つは、maven-compiler-plugin をバージョン 2.3.2 から 3.1 に上げることでした。これを実行すると、プロジェクト内の一部のコンポーネントが正常にビルドされなくなります。与えられた唯一のエラーはこれです:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project project-name: Compilation failure -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project project-name: Compilation failure

-X スイッチを指定して maven を実行すると、ログに大量のテキスト ブロックがあることがわかります。このテキスト ブロックを javac で実行することに成功したところ、問題は基本的に引数文字列 (つまり、コマンド ライン オプション) が OS X の Bash で処理するには長すぎることにあることがわかりました。

-bash: /usr/bin/javac: Argument list too long

バージョン番号も徐々に上げようとしましたが、問題は maven-compiler-plugin バージョン 3.0 で始まります。

これは、POM でプラグインをインポートする方法です。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <verbose>true</verbose>
        <encoding>UTF-8</encoding>
        <source>1.6</source>
        <target>1.6</target>
    <forceJavacCompilerUse>true</forceJavacCompilerUse>
    </configuration>
</plugin>

コマンド ライン オプションには明らかに 35 万文字を超える文字があり、OS X ターミナルでは処理できません。OS X の ARG_MAX は 32 kb ですが、Linux Ubuntu は 256 kb をサポートしているようです。Linux Ubuntu は問題なく新しいバージョンでプログラムをコンパイルするので、基本的に私たちの疑いを確認します。

したがって、私の質問は次の 2 つに要約されます。

1) javac を介して手動で実行する必要があるこの巨大なテキスト ブロックの代わりに、Maven に適切なエラー メッセージを表示させることはできますか? (その他のエラーは適切にキャッチされ、適切なエラー メッセージに表示されます)。いくつかの設定を試しましたが、うまくいきませんでした。

2) a) Maven がこのサイズの引数文字列を生成するのを止める (バージョン 2.3.2 から 3.1 で明らかに何かが起こった)、または b) OS X で MAX_ARG を増やすことができる修正はありますか?

4

2 に答える 2

0

私はいつもこれらを取得していましたが、M2_REPO を /java/m2/r などのルートに近い場所に移動する習慣を身につけました。

  <localRepository>/java/m2/r</localRepository>

私の~/.m2/settings.xmlに

于 2013-07-26T20:39:58.390 に答える