Maven 2 Maven release插件,具有与配置文件相关的子模块
我正在尝试使用多模块maven项目执行发布。我的目标是修改所有POM的版本,并在SCM中创建一个标记,这就是我使用maven发布插件的原因 该项目有一个层次结构,我将其简化为:Maven 2 Maven release插件,具有与配置文件相关的子模块,maven-2,maven-release-plugin,Maven 2,Maven Release Plugin,我正在尝试使用多模块maven项目执行发布。我的目标是修改所有POM的版本,并在SCM中创建一个标记,这就是我使用maven发布插件的原因 该项目有一个层次结构,我将其简化为: example/ module1/ module2/ module-jni-linux/ module-jni-macosx/ 示例的pom.xml包含如下模块: <modules> <module>module1</module>
example/
module1/
module2/
module-jni-linux/
module-jni-macosx/
示例的pom.xml包含如下模块:
<modules>
<module>module1</module>
<module>module2</module>
</modules>
最后,每个模块jni-*
使用本机maven插件编译一些C/C++源代码并生成一个共享库
问题:
当我在Mac OS X中尝试一个mvn发行版:prepare-DdryRun=true
时,我意识到发行过程中没有考虑到模块jni linux
。这意味着,虽然所有模块都传递到1.0.0/1.0.1-SNAPSHOT版本,但不会修改模块jni linux
。在执行发布:准备时,我希望更新所有子模块,即使其配置文件尚未激活
我试图用mvn-p linux、macosx…
激活这两个配置文件,但是模块jni linux
将无法在mac(和viceversa)下构建
如何执行更新两个子模块版本的发布?对于父pom.xml中的Maven release插件配置,您是否尝试过使用
基本上,它允许您向Maven调用传递附加参数,包括配置文件,如-p linux、macosx。好的,我找到了一种方法:
为了创建发布,maven发布插件在提交到SCM之前运行clean
和verify
目标。verify
目标尝试编译每个模块
我现在要做的是配置插件,使其只运行verify
目标。但是由于verify
无论如何都很重要,所以在不同环境下发布之前,我会手动运行它。我的释放程序如下:
在Mac和Linux环境中运行mvn clean verify
。为此,我配置了一个多节点hudson作业
运行mvn发行版:prepare-pmacosx,linux-DdryRun=true-dprepartiongoals=clean
,这将激活两个配置文件,但跳过编译
-DdryRun=false执行步骤2
我遇到的正是这个问题。你是否设法用另一种方法解决了这个问题,或者这是唯一的解决办法。谢谢
<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>