私が取り組んでいるプロジェクトの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 を増やすことができる修正はありますか?