我想弄清楚我是否已经使用screwy version numbers将自己画成一个角落。
我发布的版本如下:
在SVN回购中工作。将项目迁移到github后,我决定使用日期戳并发布
因为我没有花时间去理解版本号的含义。
我最近一起行动并阅读了Maven Version Range Specification 并推
我的理解是依赖
<version>[1.1,)</version>
将 20150501.1 视为最新版本,而不是最近发布的版本 1.1 。
如果我不想更改工件/组名并有效地孤立 代码取决于旧版本,我承诺日期戳样式 版本向前发展?
是否存在弃用工件的标准方法?
此工件是一个安全基础架构,因此更多用户可能会对此工件使用[20150501.1,)
等开放范围,以便他们快速获取安全关键补丁。
答案 0 :(得分:2)
版本范围是邪恶的,因为它们使构建不可重复。 [1.1,)
是一个特别糟糕的示例,因为它匹配1.1
和2.0
,这很可能是源代码彼此不兼容。 [1.1,2.0)
更好,但仍可能破坏构建。请注意,最后一个示例实际上会自然地解决您的问题,因为它不匹配20150501.1
。
我实际上更担心对versions:use-latest-versions
的影响,这是理智的人会用来更新最新版本的依赖关系。使用项目的版本历史记录,该目标始终默认选择20150501.1
。幸运的是,该插件支持excludes
指令,可用于解决此问题。