为什么maven版本插件升级主要版本时被告知不要?

时间:2014-08-01 19:46:32

标签: maven versions

我不知道我是否只是在maven版本插件中遇到了一个错误,或者有些东西我不理解......我正在使用versions:use-latest-releases来更新pom中依赖项的版本文件,指定不允许使用-DallowMajorUpdates=false进行重大更新。似乎maven根据输出获取了该功能(见下文),但后来我确实升级了Tomcat的主要版本(见下文)。

注意:我屏蔽了项目的名称,但其余部分是逐字的。

C:\>mvn clean versions:use-latest-releases -DallowMajorUpdates=false
[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building XXXXXXXXXXX 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ XXXXXXXXXXX ---
[INFO]
[INFO] --- versions-maven-plugin:2.1:use-latest-releases (default-cli) @ XXXXXXXXXXX ---
[INFO] Minor version changes allowed
Props: {project.version=1.0-SNAPSHOT, project.artifactId=XXXXXXX,  project.groupId=xxx.xxx.xxxxxx}
[INFO] Updated org.apache.tomcat:servlet-api:jar:6.0.33 to version 7.0.0.RC3
[... more stuff ...]

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

我想这与servlet-api(7.0.0.RC3)的版本号有关,它不是maven一致版本号。 Maven和版本插件需要这样的东西:

<major version>.<minor version>.<incremental version>-<qualifier>

不匹配的版本号也会混淆maven版本范围。我不知道版本号插件是如何做到这一点的,但是maven将使用字符串比较来获取与模式不匹配的版本号,因此不了解主要版本和次要版本。请参阅Project Versions

也许您可以通过使用版本插件的规则并忽略以7开头的所有版本来修复此行为(请参阅Rules)。我从来没有使用它们,所以除了文档之外我无法提供任何帮助。