困ったときの逆引き
この章ではMaven利用時にありがちな問題について、調査方法と解 決方法を説明します。
実行環境によって結果が異なる場合、まずはJDKのバージョンやLocaleなどに環境差がないかどうか確認します。 以下のコマンドで環境依存の情報を一括確認できますので、利用してください。
mvn -v
またファイルパスによる問題なら、以下も確認してください。
- Mavenの設定では一括してスラッシュを利用して構いませんが、必要に応じて
${file.separator}
を利用できます。 - Javaはパッケージ とフォルダ階層を等しくする必要があるため、この制限に引っかかる可能性があります。プロジェクトはドライブ直下など、パスが浅い場所に作成するようにしてください。
これでも解決できない場合は、Mavenの設定に相違がないか確認するとよいでしょう。Mavenは実行環境に応じて 設定を切り替える機能を提供しているため、これによって結果が異なってしまっているのかもしれません。 Mavenは原 因究明に便利なプラグインを提供していますので、以下に紹介します。
まずはmaven-help-pluginのactive-profilesゴールです。 これは実行時に有効化されているMavenプロファイルを一覧で表示してくれます。有効化されているMavenプロファイルに差があれば、そこに原因があるかもしれません。 このゴールを利用するには、以下のように
mvn
コマンドを実行します:mvn org.apache.maven.plugins:maven-help-plugin:2.2:active-profiles
次にmaven-help-pluginのeffective-pomゴールです。
pom.xml
は継承やsettings.xml
やMavenプロファイルなど、様々な要因によって要素が書 き換えられますが、 このゴールはそうした変動要因を考慮した、最終的な設定を出力してくれます。 このゴールを利用するには、以下のようにmvn
コマンドを実行します:mvn org.apache.maven.plugins:maven-help-plugin:2.2:effective-pom
最後にmaven-help-pluginのeffective-settingsゴールです。 これはMavenリポジトリのミラーサイトなど、
pom.xml
に書かれていない(プロジェクトに依存しない)設定を参照するために使用します。 このゴールを利用するには、以下のようにmvn
コマンドを実行します:mvn org.apache.maven.plugins:maven-help-plugin:2.2:effective-settings
mvn
コマンドを実行するときに、-X
オプションを加えてみてください。 デバッグログが出力され、各プラグインがどのような設定を受け取ったか表示されるようになります。デバッグログの出力はビルドの実行を低速化させ、ログファイルを大きくしますので、原因究明するときにのみ 使うようにするとよいでしょう。
TODO
Last modified 5yr ago