我正在尝试使用多模块 Maven 项目执行发布。我的目标是修改所有 pom 的版本,并在 SCM 中创建一个标签,这就是我使用 maven 发布插件的原因。
这个项目有一个层次结构,我将其简化为:
example/
module1/
module2/
module-jni-linux/
module-jni-macosx/
pom.xmlexample
包含它的模块,如下所示:
<modules>
<module>module1</module>
<module>module2</module>
</modules>
并且 pom.xmlmodule2
包含依赖于由操作系统类型确定的配置文件的模块:
<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 机器中尝试 a 时,我意识到module-jni-linux
发布过程没有考虑到 。这意味着虽然所有模块都传递到 1.0.0/1.0.1-SNAPSHOT 版本,module-jni-linux
但不会被修改。我想要的release:prepare
是,即使其配置文件尚未激活,所有子模块也会更新。
我尝试使用 激活这两个配置文件mvn -P linux,macosx ...
,但module-jni-linux
不会在 mac 下构建(反之亦然)。
如何执行更新两个子模块版本的发布?