关于 Maven 版本插件

Posted

技术标签:

【中文标题】关于 Maven 版本插件【英文标题】:Regarding Maven Versions Plugin 【发布时间】:2014-08-01 15:05:46 【问题描述】:

我正在尝试使用 Maven 版本插件将所有子 POM 升级到父版本并执行父 pom 中所有子模块的构建。Pom 文件看起来像这样

父 POM

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.build.pom</groupId>
    <artifactId>basepom</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>
            <module>../Common</module>
        <module>
    <modules>

    <!-- . . . -->
</project>

儿童绒球

<parent>
    <artifactId>basepom</artifactId>
    <groupId>com.build.pom</groupId>
    <version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.child.common</groupId>
<artifactId>common</artifactId>
<packaging>jar</packaging>
<name>Common</name>
<description>Common Jar</description>

现在,如果我使用来自 Eclipse 的命令在基础 POM 上运行 Maven 构建

mvn clean install 

如果我将 basepom 版本更新为 2.0 并使用版本插件命令,子模块正在正确构建

mvn clean -N versions:update-child-modules install

版本正在更新,但子模块尚未构建。只有基础 pom 被构建。

我是否必须明确指定在某个阶段构建子模块?我错过了什么?

【问题讨论】:

【参考方案1】:

您可以像这样使用 set-goal,而不是手动设置父版本:

versions:set -DnewVersion=XXX -DgenerateBackupPoms=false install

这会更新父级和所有子级的版本,并应在之后执行安装。


编辑:

要将参数和执行移至 pom,请尝试以下方式(未测试):

  <plugin>
   <artifactId>maven-versions-plugin</artifactId>
   <executions>
    <execution>
     <goals>
      <goal>set</goal>
     </goals>
     <configuration>
       <newVersion>XXX</newVersion>
       <generateBackupPoms>false</generateBackupPoms>
     </configuration>
    </execution>
   </executions>
 </plugin>

(如果版本没有改变设定的目标应该被忽略。)

【讨论】:

Rob 我不想每次都更新 MVN 命令。我使用 jenkins 来构建战争,并且构建是由不同的团队处理的,他们对工件的版本一无所知。所以这对我不起作用。我正在 POM 文件中寻找用于版本升级的内容,而不是来自命令行。

以上是关于关于 Maven 版本插件的主要内容,如果未能解决你的问题,请参考以下文章

关于maven的规则插件:Maven Enforcer plugin

关于maven插件在Myeclipse中的使用

关于maven 把插件依赖一起打包进jar问题

Jetty 插件如何为 Maven 工作?

从插件设置 Maven 属性

关于Cordova Android