maven2依赖

时间:2010-08-02 14:45:41

标签: maven-2

在pom.xml中,当指定依赖版本时,LATEST和[0,)之间有什么区别? 在我看来,它们应该是等价的,但对于某些依赖项,LATEST不匹配任何版本,而[0,)则相同。

2 个答案:

答案 0 :(得分:1)

  

在我看来,它们应该是等价的,但对于某些依赖项,LATEST不匹配任何版本,而[0,)则相同。

理论上,LATEST是最新发布的版本或快照版本(请参阅Rich Seller的excellent answer关于特殊的RELEASE和LATEST版本),所以我的确期望与[0,)范围相同的行为。出于好奇,你能提供一个LATEST不匹配的例子吗?

话虽这么说,我不建议使用LATEST或RELEASE特殊版本,因为它们会使您的构建更加脆弱并损害构建重现性(您不希望构建因为一些不受控制的更新而突然开始失败)。不可否认,它们被认为是一个坏主意,并且已从文档中删除了引用(除了德语版本的权威指南的未翻译部分) 他们are no longer supported in Maven 3.x

因此强烈邀请他们根本不使用它们(不好的做法,不推荐使用,下一版本不支持)。

我在某种程度上认为同样适用于版本范围(一般情况下),我不推荐它们,因为我在之前的答案或评论中多次写过。例如见:


评论后的跟进

  

这是一个例子(在众多中):

<dependency> 
  <groupId>aspectj</groupId>
  <artifactId>aspectjrt</artifactId>
  <version>[0,)</version>
</dependency>
     

- &GT;匹配版本1.5.3鉴于:

<dependency> 
  <groupId>aspectj</groupId>
  <artifactId>aspectjrt</artifactId>
  <version>LATEST</version>
</dependency>
     

- &GT;无法解决

我不是100%,但我不认为这个工件正在为此功能提供正确 maven-metadata.xml。我认为元数据应包含maven插件的<release><latest>元素(例如参见此maven-metadata.xml)。但出于上述原因,我不会花太多时间在这上面,只要忘记这个LATEST的东西。

答案 1 :(得分:0)

  

当你依赖插件或者   依赖,你可以使用一个版本   LATEST或RELEASE的价值。最新   是指最新发布的或   特定的快照版本   神器,最近部署的   特定存储库中的工件。   RELEASE是指最后一个   非快照发布   库。一般来说,它不是一个   设计软件的最佳实践   取决于非特定版本   一件神器。如果你正在发展   软件,您可能想要使用   释放或最新为方便   您不必更新版本   一个新版本的数字   第三方库已发布。什么时候   你应该发布软件   始终确保您的项目   取决于要减少的具体版本   你的建立或你的机会   项目受软件影响   释放不在你的控制之下。使用   如果在,请保持最新和释放   所有

See,有关此主题的更多信息。

确保您要查找的工件存在于本地存储库中。

但是,我必须向你发出有关LATEST和RELEASE版本标记的警告,正如文档摘录所述,使用它们是一种不好的做法。事实上,我认为Maven 3.X将不再支持LATEST和RELEASE版本标记。

我的建议是完全放弃使用并坚持使用特定的版本符号。

编辑:

这是一个POST,它解决了这个完全相同的信息,但更加深思熟虑。

感谢@Pascal Thivent观察:)我总是包含对其他StackOverflow问题的引用,这些问题涉及我正在讨论的同一主题。