我试图使用多模块maven项目执行发布。我的目标是修改所有poms的版本,并在SCM中创建一个标签,这就是我使用maven release插件的原因。带配置文件依赖子模块的Maven发布插件
该项目,我已经简化为一个层次:
example/
module1/
module2/
module-jni-linux/
module-jni-macosx/
的example
pom.xml中包含这样的模块:
<modules>
<module>module1</module>
<module>module2</module>
</modules>
和module2
pom.xml中包含的模块取决于由操作系统类型确定的配置文件:
<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 2011-07-01 22:16:24