Mavenリリースから変更されていない(SCM)モジュールを除外する方法
-
13-10-2019 - |
質問
私は約200の瓶を含む巨大なプロジェクトを持っています。リリースMavenをすべての瓶に準備するときに、最後のビルド以降に変更されていない瓶があることは確かです。 ?そしてそれらを除外しますか?
私は個別に瓶(200以上)をリラーズしたくありません。
たとえば、親のためにリラーズを作りたいのですが、変更されていないJAR4をリラーズしたくありません
-Parent
---------Module1
----------------jar1*
----------------jar2*
---------Module2
----------------jar3*
----------------jar4
解決
たとえば、親のためにリラーズを作りたいのですが、変更されていないJAR4をリラーズしたくありません
これの構文はです
mvn -pl Module1,Module2/jar3 <your maven goals here>
(この場合、Module2のすべてのModule1とJAR3のすべてを構築する必要があります)
これで、トリッキーな部分は、パラメーターを-plに組み立てる方法です。私はそれを行うためのマベンな方法がないと確信しているので、おそらくあなたのためにそれを行うシェルスクリプト(またはRuby、Groovy、Perl Pythonなど)を書く必要があります。
基本的に、スクリプトがしなければならないこと:
- 指定されたディレクトリにあるすべてのMavenプロジェクトディレクトリ(POM.xmlを含むディレクトリ)を探して、それらを逆にソートします(最初に深いパス)
- 階層全体ですべての変更されたファイルを見つけます(SVN、CVS、または呼び出しを使用して)
- それぞれ変更されたファイルをプロジェクトのいずれかにマップし(パスを比較することで)、リスト内のすべての一致したプロジェクトを収集します
- ここで、親/子の最適化を行うことでリストを最適化します(特定の親のすべての子供が存在する場合は、子供を削除して親を追加します)。ルート階層に到達するまでこれを繰り返し行います。
- 残りのリストから、相対パスを抽出し、コンマでそれらを結合し、その値を使用してMavenプロセスを開始します
-pl
パラメーター。
所属していません StackOverflow