7

我通常的做法是每个 svn 主干有一个 maven 项目(可以是多模块),如下所示:

trunk/ (style 1)
  /pom.xml
  /submod-1
  /submod-2

基本上,整个主干被视为一个单独的发布包。我发现这更容易管理。有一个聚合/父 pom 来管理此主干中的所有模块。

但是,我注意到我的一些同行是这样组织的:

trunk/ (style 2)
  /project-1
    /pom.xml
  /project-2
    /pom.xml

基本上,在单个 svn trunk...project-1 和 project-2 需要分别管理。即,我无法检查树干并将其内容作为单个多模块 maven 项目处理——我很欣赏。

Q1:风格 2 什么时候会是一个好主意,如果有的话?

Q2:有人可以告诉/指出如何使用颠覆来管理 Maven 项目的最佳实践吗?

4

4 回答 4

2

我见过这两种情况。

在我看来,这取决于项目/模块的独立程度。如果他们有自己的发布计划,那么拥有自己的主干、分支和标签对他们来说是有意义的。但是,如果项目/模块总是一起发布,那么将它们作为单个主干的一部分可能是有意义的。

从 Maven 的角度来看,如果多模块项目的模块<version>从父级继承,那么它应该遵循style 1上述。

于 2012-06-12T04:54:39.280 回答
2

我非常同意@Raghuram 的回答,但想补充以下内容:

  • 如果要发布相同生命周期和相同版本号的项目,则需要 Style 1,其父 POM 在主干的根目录中。然后,这个父 POM 通常包含子项目作为要从根目录构建的模块。
  • 如果您有一组独立的项目(例如实用程序),则样式 2 很有意义,您需要一个单一的 SVN 位置(以便于管理),但有不同的发布周期。在这种情况下,您不需要将单个项目包含为modules的根聚合器 POM 。为实用程序项目提供一个通用的父 POM 可能仍然有意义,它集中了编译器设置和插件管理等内容。与样式 1 的不同之处在于您永远不会一起发布所有项目。您将仅发布父 POM 的稳定版本,然后根据需要发布单个实用程序项目。

我们已经成功地使用了这两种风格 - 主要区别实际上在于您用于发布的方式和频率。

对于样式 2(和实用程序项目示例),如果这些项目共享相同的 SVN 标签和主干,我看不到问题。开发人员仍然可以决定是要检查整个实用程序主干还是只检查单个项目。

于 2012-06-12T06:15:24.680 回答
1

只要看看这个问题,至少看看它的最高答案。它实际上总结了这个案例,并说得很清楚。

于 2012-06-12T06:34:03.980 回答
0

想想继续集成:这个想法使第一个方法更灵活地与 CI 服务器(如 jinkins、bitbucket 或竹子)一起使用......

于 2018-03-25T08:50:00.383 回答