5

一个与基本 maven 概念相关的问题:

一旦发布,我想保证项目构建是完全可重现的。因此,所有项目和插件依赖项,包括传递依赖项,都应该始终以相同的方式解决。

不幸的是,如果依赖关系以版本范围表示,情况并非如此。即使设置了项目的直接依赖项(使用versions:use-releases),也可能发生传递依赖项将来仍可以通过其他方式解决的情况。

如何解决问题?有已知的解决方案吗?

我在想(只是一个想法),关于创建一个插件,它在发布时会将项目的所有依赖项转储到一个单独的文件中,然后一旦在未来构建,从文件中读取的依赖项将优先于标准maven 用来解决依赖关系的方式。但恐怕没有插件api。所以它需要一些黑客攻击,我想避免。还有其他方法吗?

谢谢,卢卡斯

4

2 回答 2

3

使用 . 冻结工件版本<dependencyManagement>。即使您不使用版本范围(如您所说),而是使用 3rd 方库(您的依赖项),您<dependencyManagement>在指定任何工件的版本时将具有更高的优先级。

于 2012-06-19T14:34:25.823 回答
0

简单的解决方案是:不要使用版本范围。这是不好的做法,因为它会导致所描述的问题。

于 2012-06-19T14:12:49.830 回答