maven版本:设置不更新父pom

时间:2015-07-20 18:57:03

标签: maven

我跟随父pom文件:

     <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.xyz</groupId>
        <artifactId>abc</artifactId>
        <version>1.0.0.36</version>
        <packaging>pom</packaging>
        <name>Common Data Access Framework</name>
        <build>
        <pluginManagement>
    ...
    ...

现在,当我从具有此父pom文件的同一文件夹中运行以下命令时:

mvn versions:set -DnewVersion=9.9.9.9

它将更新所有子模块和pom文件中的版本详细信息“除了”它自己的(父项)。这真的很奇怪,因为我在同一个文件夹中运行它。

2 个答案:

答案 0 :(得分:3)

昨天我遇到了类似的问题。原因是我的父pom.xml在xml标记之前有前导空格。删除它之后:set按预期工作,在所有poms,父级和子级中设置版本。 我不知道这是否是你的情况下的解决方案,但我发布这个以节省另一个糟糕的灵魂时间的愚蠢调试。

答案 1 :(得分:1)

使用mvn version:set -DnewVersion=...文件夹中的Maven 3.3.3 root尝试以下内容:

- root
  - sub-1
  - sub-2
  • 如果sub只是孩子(<parent>root</parent>),则只更新root POM的<project>/<version>sub s <parent>/<version> s不是!
  • 如果sub是子项模块,则root POM的<project>/<version>sub s <parent>/<version>是更新。
  • 如果sub只是模块,则root POM的<project>/<version>会按预期更新。

这与你的结果不同,但同样奇怪,因为versions:set说:

  

设置当前项目的版本,并根据该更改将更改传播到任何子模块上。

sub模块上面提到的两个最重要的运行中的孩子。

更新

父POM未更新的原因可能是9.9.9.9不是标准的Maven版本:

  

项目的版本号用于分组和订购版本。 Maven版本包含以下部分:主要版本,次要版本,增量版本和限定符。在版本中,这些部分对应于以下格式:
  
      <major version>.<minor version>.<incremental version>-<qualifier>

  

如果您使用非标准版本控制方案,则Maven版本和版本插件目标可能无法产生预期结果。由于基本字符串比较是在非标准版本上执行的,因此版本比较在某些情况下会错误地计算版本的顺序。