我跟随父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文件中的版本详细信息“除了”它自己的(父项)。这真的很奇怪,因为我在同一个文件夹中运行它。
答案 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版本和版本插件目标可能无法产生预期结果。由于基本字符串比较是在非标准版本上执行的,因此版本比较在某些情况下会错误地计算版本的顺序。