构建推广:如何管理依赖关系?

7

我正在尝试理解将我们的Java项目从快照/发布策略切换到构建推广的所有影响。

一个明显的步骤是每个构建都会创建一个可能一直到生产环境的工件,因此不再有快照了。但是,如何管理项目到其他工件的链接呢?这些工件可能允许或不允许进入生产环境?

我很难在这个特定主题上找到有价值的信息。当然,构建推广经常被谈论,但在迁移到构建推广的情况下,依赖关系管理的能见度较低。

我看到两种选择:

  • 一个只能依赖于之前已推广到生产环境的工件
  • 当一个依赖于另一个工件时,构建的工件只能到达其依赖项的最后一个环境。也就是说,如果我依赖于一个允许进入测试但不允许进入生产环境的工件,则我的构建将无法进入生产环境

关于这个话题有行业标准或最佳实践吗?

非常感谢您的帮助 :)

编辑:

我们部署到Artifactory三种类型的工件:

  • EARs

  • EAR中的模块。其中一些是“公共”层,任何想要与当前构建的EAR进行交互的EAR都需要这些层

我们将EAR部署到JEE服务器。我们的库和公共层被部署到Artifactory并打包在EAR中,因此它们不会直接部署在JEE容器上。

一个项目构建多个模块,并将所有内容打包在一个EAR中,以及其依赖项。一个项目可以依赖于另一个项目的模块,这就使问题变得复杂了...


1
JF Meier的下面的回答让我想到了,你能进一步描述一下你正在部署哪些工件,或者高层次地描述一下你正在制作什么样的系统吗?他提出了一个关于可部署与不可部署的好观点。 - Nick DeFazio
2
通过“我们部署”您的意思是“我们构建并放置在artifactory”,还是指部署到某种服务器?尤其是:您是否将库部署到服务器上?您能详细说明您提到的最后一点吗? - J Fabian Meier
根据您的评论进行了更新,非常感谢您的时间! - Sébastien
1
那么我会坚持我的下面的答案,并且更喜欢只推广 ears。推广库似乎是不必要的 - 在构建期间运行单元和集成测试,而运行时测试没有意义,因为没有周围的 ear,库无法运行。 - J Fabian Meier
1
我不太明白。我建议只推广耳朵。依赖使用的模块不需要被推广(在我看来)。 - J Fabian Meier
显示剩余3条评论
1个回答

3
我们区分“可部署的构件”和“库”。
可部署的构件(如ears、wars、standalone jars)通过管道进行,因此它们在不同的步骤中进行推广和测试。它们不能成为任何其他构件的依赖项。
另一方面,库不会被推广。当它们被构建(作为发布版本),它们立即可用作所有其他构件的可能依赖项(发布构建包括单元测试和一些集成测试)。当它们在可部署的构件中使用时,它们会间接地进行测试和推广。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接