我的项目有10个左右的可重用组件,每个组件都在自己的存储库中,独立版本化,但是相互依赖构建。
现在,每个组件都有自己的nexus SNAPSHOT存储库和用于夜间构建的自定义nexus组,因此我可以确定组件的每晚构建仅包括第三方及其所需的其他组件。具体而言,该组将不具有该组件自己的快照存储库。通过这种方式,我可以检测到什么时候已经删除了一个jar,但是我忘了清理它对pom的依赖。构建将破坏,而不是默默地成功,因为它找到了一个旧的SNAPSHOT jar。
但从管理角度来看,这是一个巨大的痛苦,而且我从公开的nexus存储库(和声纳类型书)中看到的是为团队或组织而不是每个组件创建一个存储库。
有没有更好的方法来解决这个问题?有没有办法在组件pom中安装nexus黑名单,这样它就不会尝试下载某些工件/组ID组合?
答案 0 :(得分:0)
pom中的黑名单是不可能的。我假设您的项目设置错误。
我建议为项目创建一个包含所有模块(可重用组件)的多模块项目。
big-project (pom.xml)
+--- module1 (pom.xml)
+--- module2 (pom.xml)
+--- module3 (pom.xml)
+--- module4 (pom.xml)
..
这将为您提供仅将所有组件的单个版本组合在一起的优势,以及一个简单的解决方案,可以在不维护依赖关系的情况下将它们组合在一起,特别是在不同版本中并且具有项目的一致性状态,因为您可以看到哪个组件(模块)适用于其他组件的版本。
在您的设置中,很难知道哪个版本的哪个组件与特定版本中的其他组件一起使用。
除了上述内容之外,它还可以更简单地创建集成测试,作为构建的一部分,更简单,如下所示:
big-project (pom.xml)
..
+--- it-mod (pom.xml)
..
此外,您也可以使用其他项目中的单独模块(组件)。
在nexus中使用不同的SNAPSHOT存储库是没有意义的,因为每个组件都应该有一个groupId / artifactId / version坐标,这样你就可以使用一个SNAPSHOT存储库,否则你对你有经验的存储库有一个维护地狱。 / p>