トラブルシューティング mavenでdependencyのjarが落ちてこない

とあるモジュールをバージョンアップしたタイミングでpom.xmlに記述されているjarが落ちてこないという問題が発生。
実行時にNoClassDefFoundErrorが発生して発覚。

もちろん以前からさんざん取り上げている通りNoClassDefFoundErrorの原因はそのクラスがないことなのでjarがないことを確認した。

落ちてこないjarは依存モジュールがさらに間接的に依存しているjarである。
そしてそのモジュール単体のpom.xmlには依存関係が記載されており、
mvn dependency:treeを実行すると該当のjarが表示される。

ただしプロジェクト全体のpom.xmlを読み込ませてdependency:treeを実施すると該当のjarが表示されない。
よくよく見てみると以下のメッセージが出力されており、なにやら問題ありそうだ。

[WARNING] POM for ‘xx.xx.xx:pom:1.0.xx:compile’ is invalid.

このメッセージが出ていると、該当jarの依存関係を無視してビルドを進めるため、ビルドが成功しているように見えて、
必要なjarがないという危険な状態でビルドが終わる。

根本原因はpom.xmlのアップロード時に変換されて、dependencyが落ちていたことである。
サードパーティライブラリなので手動でmvnコマンドをたたいたのだが、勝手にオリジナル違うpom.xmlを生成する凶悪なデフォルトのふるまいである。手元にあるpom.xmlを指定しているのに、それをアップロードしてくれないという・・・

この凶悪なふるまいを変更するには-DgeneratePom=falseを付与して、mvnコマンドを実施すること。

mvn deploy:deploy-file -Dfile=parent.pom  -Durl=http://www.rutake.com/nexus/ -DrepositoryId=myrepo  -DgroupId=com.rutake.common -DartifactId=common -Dversion=1.0.99 -Dpackaging=pom -DgeneratePom=false
カテゴリー: Java タグ: パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.