0

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

现在,每个组件都有自己的 nexus SNAPSHOT 存储库和用于夜间构建的自定义 nexus 组,因此我可以确定组件的夜间构建仅包括第 3 方和它需要的其他组件。具体来说,该组将没有组件自己的快照存储库。通过这种方式,我可以检测到一个 jar 何时被删除,但我忘记清理对它的 pom 依赖。构建将中断,而不是默默地成功,因为它找到了一个旧的 SNAPSHOT jar。

但从管理的角度来看,这是一个巨大的痛苦,从我所看到的公共关系存储库(和 sonatype 书)来看,是为团队或组织而不是每个组件拥有一个存储库。

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

4

1 回答 1

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 存储库,否则您有经验的存储库的维护地狱。

于 2013-05-07T06:01:13.130 回答