Maven& Nexus处理SNAPSHOT依赖项

时间:2013-05-06 17:46:58

标签: maven nexus nightly-build

我的项目有10个左右的可重用组件,每个组件都在自己的存储库中,独立版本化,但是相互依赖构建。

现在,每个组件都有自己的nexus SNAPSHOT存储库和用于夜间构建的自定义nexus组,因此我可以确定组件的每晚构建仅包括第三方及其所需的其他组件。具体而言,该组将不具有该组件自己的快照存储库。通过这种方式,我可以检测到什么时候已经删除了一个jar,但是我忘了清理它对pom的依赖。构建将破坏,而不是默默地成功,因为它找到了一个旧的SNAPSHOT jar。

但从管理角度来看,这是一个巨大的痛苦,而且我从公开的nexus存储库(和声纳类型书)中看到的是为团队或组织而不是每个组件创建一个存储库。

有没有更好的方法来解决这个问题?有没有办法在组件pom中安装nexus黑名单,这样它就不会尝试下载某些工件/组ID组合?

1 个答案:

答案 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>