我有2个不同的项目,它们共享一些共同的代码。因此,我即将创建一个Multi Module Maven项目。
ParentModuleProject
-webModule
--common
--Module1
--Module2
-importerModule
--common
--Module1
--Module2
应用程序Module1
和Module2
将拥有自己的发布周期。它们不一定会一起发布。它们也将在不同的服务器上运行。 common
模块只是在所有模块之间共享公共代码的实用程序模块(如域逻辑)。他们永远不会为自己释放。
此外,导入器项目将定义一些批处理作业,每个模块的每个批处理作业将在不同的服务器上运行。
总而言之,我将拥有4台具有2x2类似应用程序的服务器,但它们都有自己的生命周期。但是他们将通过common
模块分享大量代码。
问题:哪个项目有主干/标签/分支svn结构有意义?
只有子模块本身?或者稍后让webModule
,importerModule
甚至根ParentModuleProject
拥有此结构也会有用吗?
这什么时候有用?如果我想在一个标签中包含所有模块的标签/分支?如果是这样,并且如果我的所有模块都有自己的生命周期,那么可能永远不会出现这种情况,所以我可以在3个父模块中省略这个svn结构吗?
答案 0 :(得分:1)
正如你所提到的,常见的模块是永远不会被释放的utlity模块,因此为它创建branch / tag / trunk文件夹是没有用的。
由于 importerModule / Module1 , importerModule / Module2 , webModule / Module1 和 webModule / Module2 具有独立发布循环需要为它们分隔Tag Trunk和Branch文件夹。
由于SVN提供灵活性来选择维护文件夹结构的方式,可以有很多方法来处理这个要求,但我喜欢以下方法:
<强>布局强>
webModule和importerModule将具有标记/ trunk / branch结构。
- ParentModuleProject
---的 webModule 强>
- - - - 的中继线强>
------- 常见
------- Module1
------- Module2
- - - - <强>分支机构强>
------- Module1-R1
------- Module2-R3
- - - - 的代码
------- Module1-R1-1.0-120413
------- Module2-R2-2.0-200313
---的 importerModule 强>
- - - - 的中继线强>
------- 常见
------- Module1
------- Module2
- - - - <强>分支机构强>
------- Module1-R6
------- Module2-R8
- - - - 的代码
------- Module1-R5-1.0-120413
------- Module2-R7-2.0-200313
通过使用此布局,您必须为每个模块管理seprate标记,主干和分支文件夹。
由于trunk将包含应用程序webModule和importerModule的关键组件,您可以轻松地为Module1和Module2创建发布分支,如
svn copy&#34; ^ / webmodule / trunk / module1&#34; &#34; ^ / webmodule /支链/模块1-R1&#34;
Module1和Module2的Seprate发布分支将处理不同的发布周期。
由于标签只是您发布的内容的快照,因此将Module1和Module2的标签放在一起不会出现像
这样的问题svn copy&#34; ^ / webmodule / branches / module1-r1&#34; &#34; ^ / webmodule /标签/模块1-r1-230413&#34;
希望这有帮助
Jyotsna