マルチモジュールのMavenプロジェクトを使用してリリースを実行しようとしています。私の目的は、すべてのpomのバージョンを変更し、SCMでタグを作成することです。そのため、Mavenリリースプラグインを使用しています。
このプロジェクトには、次のように簡略化した階層があります。
example/
module1/
module2/
module-jni-linux/
module-jni-macosx/
のpom.xmlには、次のexample
ようなモジュールが含まれています。
<modules>
<module>module1</module>
<module>module2</module>
</modules>
また、のpom.xmlにmodule2
は、OSタイプによって決定されるプロファイルに依存するモジュールが含まれています。
<profiles>
<!-- profile for linux -->
<profile>
<id>linux</id>
<activation>
<os>
<name>linux</name>
</os>
</activation>
<modules>
<module>module-jni-linux</module>
</modules>
</profile>
<!-- profile for mac os -->
<profile>
<id>macosx</id>
<activation>
<os>
<name>mac os x</name>
</os>
</activation>
<modules>
<module>module-jni-macosx</module>
</modules>
</profile>
最後に、それぞれmodule-jni-*
がnative-maven-pluginを使用して、いくつかのC / C ++ソースをコンパイルし、共有ライブラリを生成します。
問題:
Mac OS Xボックスで試してみると、リリースプロセスでが考慮されていないmvn release:prepare -DdryRun=true
ことに気付きました。module-jni-linux
つまり、すべてのモジュールが1.0.0 / 1.0.1-SNAPSHOTバージョンに渡されますが、module-jni-linux
変更されません。release:prepare
プロファイルがアクティブ化されていなくても、すべてのサブモジュールが更新されることを実行するときに必要です。
で両方のプロファイルをアクティブにしようとしましmvn -P linux,macosx ...
たが、module-jni-linux
mac(およびその逆)ではビルドされません。
両方のサブモジュールのバージョンを更新するリリースを実行するにはどうすればよいですか?