Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个svn主干是否有一个(多模块)maven项目_Maven - Fatal编程技术网

每个svn主干是否有一个(多模块)maven项目

每个svn主干是否有一个(多模块)maven项目,maven,Maven,我通常的做法是每个svn主干有一个单独的maven项目(可以是多模块),如下所示: trunk/ (style 1) /pom.xml /submod-1 /submod-2 trunk/ (style 2) /project-1 /pom.xml /project-2 /pom.xml 基本上,整个主干被视为一个单独的发布包。我发现这更容易管理。有一个聚合/父pom来管理这个主干内的所有模块 然而,我注意到我的一些同龄人是这样组织的: trunk/ (s

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

trunk/ (style 1)
  /pom.xml
  /submod-1
  /submod-2
trunk/ (style 2)
  /project-1
    /pom.xml
  /project-2
    /pom.xml
基本上,整个主干被视为一个单独的发布包。我发现这更容易管理。有一个聚合/父pom来管理这个主干内的所有模块

然而,我注意到我的一些同龄人是这样组织的:

trunk/ (style 1)
  /pom.xml
  /submod-1
  /submod-2
trunk/ (style 2)
  /project-1
    /pom.xml
  /project-2
    /pom.xml
基本上,在单个svn主干内……项目1和项目2需要单独管理。i、 e.我不能将主干签出并将其内容作为一个单一的多模块maven项目来处理——这是我很欣赏的

问题1:风格2什么时候是个好主意


问题2:有人能告诉/告诉我如何使用subversion管理maven项目的最佳实践吗?

我已经看到了这两种方法的实例

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


从maven的角度来看,如果一个多模块项目的模块从父项目继承了它们的
,那么它应该遵循上面的
样式1

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

  • 如果您希望发布具有相同生命周期和相同版本号的项目,则需要样式1,父POM位于主干的根目录中。然后,这个父POM通常将子项目作为从根目录构建的模块包含在内
  • 如果您有一组独立的项目(例如,实用程序),其中您想要一个单一的SVN位置(以便于管理),但是有不同的发布周期,那么样式2是有意义的。在这种情况下,您不需要将单个项目作为模块包含在内的根聚合器POM。为实用程序项目提供一个公共的父POM仍然是有意义的,它集中了编译器设置和插件管理等内容。与样式1的区别在于,您永远不会同时发布所有项目。您将只发布父POM的稳定版本,然后根据需要发布单个实用程序项目
我们已经成功地使用了这两种风格——主要的区别在于发布的方式和频率


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

看看这个问题,至少看看它的最新答案。它实际上总结了这个案例,并说明了它的一切。

只要想一下继续集成:
这种想法使first Approach更灵活地用于jinkins、bitbucket或bamboo等CI服务器。

根据我自己的经验,style 2是错误的,尤其是在发布时,需要在maven发布插件中进行额外配置,以便正确地分别发布每个项目。我很好奇其他经验丰富的开发者的意见。我想补充一点,如果你使用maven发布插件,你可能会对Style2有问题。虽然我不确定它是如何决定标记的位置的。我有一个非常类似的问题,当每个模块存储在另一个svn存储库中时,如何下载MultimultiModule Maven项目。。。