Subscribed unsubscribe Subscribe Subscribe

Assemblyで生成したZIPをリポジトリにデプロイしたい その2

attachedゴールをpackageフェーズで実行してみたらこんな感じのエラーでそもそも動かない。。。

Failed to create assembly: Artifact: ○○○:△△△:jar:1.0-SNAPSHOT (included by module) does not have an artifact with a file. Please ensure the package phase is run before the assembly is generated.

ググると、sonatypeで公開されている「Maven: The Definitive Guide*1」に詳しく書いてあったよ。

どうやら、マルチモジュール構成としていて、親POMプロジェクトでAssemblyを組み込んでいる場合問題となるようだ。確かに、今回失敗したプロジェクトはここで書かれている構成と同じようなマルチモジュール構成でした。
マルチモジュール構成の場合、親POMプロジェクトのビルドが先に走るが、packageフェーズでAssemblyが動作するとまだサブモジュールはビルドされていないので失敗する、というわけらしい?

これを解決するには、Assembly用のプロジェクトを別途サブモジュールとして用意し、assembly descriptorではmoduleSetを使用せずにdependencySetを使うとよい、ということらしい。うーん、専用のプロジェクトもう1個作るのか。。。

*1:このドキュメントすごいボリュームです。無料でここまで公開されているとは驚き。これ読めばMavenマスターになれるかも。