繁体   English   中英

Maven版本范围出现意外的依赖性

[英]Maven version range picking up unexpected dependency

我有一个版本范围定义的依赖项:

<properties>
    <tomcat.version>[8.0.33,9.0.0)</tomcat.version>
</properties>

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>${tomcat.version}</version>
    <scope>provided</scope>
</dependency>

阅读maven版本后,我希望它的类型是[[1.0,2.0)-> 1.0 <= x <2.0”。 但是dependency:tree产生以下已解析的版本:

+-org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.0.M9:提供

我怎样才能告诉Maven使用从增量版本33开始的任何Major 8版本? 我目前正在使用[8.0.33,8.5.4]代替它。

您可以通过以下命令行检查版本比较在Maven中的结果:

java -jar apache-maven-3.3.9/lib/maven-artifact-3.3.9.jar 9.0.0 9.0.0.M9

结果如下:

Display parameters as parsed by Maven (in canonical form) and comparison result:
1. 9.0.0 == 9
   9.0.0 > 9.0.0.M9
2. 9.0.0.M9 == 9.0.0.milestone-9

这表明9.0.0大于9.0.0.M9 ...这意味着您得到的结果是正确的。

解决版本范围时,在版本号之间进行Maven绝对比较。 即。 它会完全按原样比较版本,而不是您的意思。

这意味着版本9.0.0.M9被认为小于9.0.0 ,因此属于[8.0.33,9.0.0)范围的一部分。

我创建了问题MNG-5353,以在比较排他上限时排除预发行版本号,但这尚未实现。

比较专有上限时排除预发行版本,将使您可以使用以下形式指定语义版本范围: [8.0.33,9.0.0)

同时,您可以使用诸如[8.0.33,8.999.999]的定义语义版本范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM