Я пытаюсь выполнить релиз, используя многомодульный проект maven. Моя цель - изменить версию всех poms и создать тег в 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
содержит модули, которые зависят от профиля, определенного типом ОС:
<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 ++ и генерации общей библиотеки.
Проблема:
Когда я пробую mvn release:prepare -DdryRun=true
в Mac OS X, я понимаю, что module-jni-linux
не учитывается в процессе выпуска. Это означает, что хотя все модули переходят на версию 1.0.0 / 1.0.1-SNAPSHOT, module-jni-linux
не изменяется. При выполнении release:prepare
мне бы хотелось, чтобы все подмодули обновлялись, даже если его профиль не был активирован.
Я пытался активировать оба профиля с помощью mvn -P linux,macosx ...
, но module-jni-linux
не будет собираться под Mac (и наоборот).
Как выполнить выпуск, обновляющий версию обоих подмодулей?