Maven版本范围获得了意想不到的依赖性

时间:2016-08-11 06:30:02

标签: java maven

我正在使用version range定义依赖关系:

<script>
processEvent(document, 'scripts_loaded', function(e) {
    // Code here
});
</script>

阅读maven版本,我预计它将是“[1.0,2.0) - &gt; 1.0&lt; = x&lt; 2.0”。但 while($row = mysqli_fetch_assoc($locate)){ echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['name'] . "</td>"; echo "<td>" . $row['grade'] . "</td>"; echo "<td>" . $row['section'] . "</td>"; echo "<td>" . $row['subject'] . "</td>"; $namers = $row['name']; //echo "<td><center> <button name = 'name1' type = 'submit' value = '$namers'>Go</button> </center></td>"; 会产生以下已解决的版本:

  

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

如何告诉Maven从增量版本33开始使用任何Major 8版本?我目前正在使用<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> 来解决这个问题。

2 个答案:

答案 0 :(得分:2)

您可以通过以下命令行检查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 ...这意味着您获得的结果是正确的。

答案 1 :(得分:1)

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

这意味着版本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]的方法来定义语义版本范围。