在pom.xml中,当指定依赖版本时,LATEST和[0,)之间有什么区别? 在我看来,它们应该是等价的,但对于某些依赖项,LATEST不匹配任何版本,而[0,)则相同。
答案 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问题的引用,这些问题涉及我正在讨论的同一主题。