Maven 2 Maven release插件,具有与配置文件相关的子模块

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>

我正在尝试使用多模块maven项目执行发布。我的目标是修改所有POM的版本,并在SCM中创建一个标记,这就是我使用maven发布插件的原因

该项目有一个层次结构,我将其简化为:

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>