Я пытаюсь выполнить выпуск с использованием мультимодульного проекта maven. Моя цель - модифицировать версию всех помпов и создать тег в SCM, поэтому я использую плагин релиза maven.Плагин релиза 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 для компиляции некоторых источников 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 (и наоборот).
Как я могу выполнить выпуск, который обновляет версию обоих подмодулей?
Я бег в именно этой проблему. Вам удалось решить это по-другому или это единственный обходной путь. Благодарю. – Eugen