Parent或Module项目是否应该有svn trunk-branch-tag结构?

时间:2014-03-20 18:43:49

标签: java maven svn project

我有2个不同的项目,它们共享一些共同的代码。因此,我即将创建一个Multi Module Maven项目。

ParentModuleProject
-webModule
--common
--Module1
--Module2

-importerModule
--common
--Module1
--Module2

应用程序Module1Module2将拥有自己的发布周期。它们不一定会一起发布。它们也将在不同的服务器上运行。 common模块只是在所有模块之间共享公共代码的实用程序模块(如域逻辑)。他们永远不会为自己释放。

此外,导入器项目将定义一些批处理作业,每个模块的每个批处理作业将在不同的服务器上运行。 总而言之,我将拥有4台具有2x2类似应用程序的服务器,但它们都有自己的生命周期。但是他们将通过common模块分享大量代码。

问题:哪个项目有主干/标签/分支svn结构有意义? 只有子模块本身?或者稍后让webModuleimporterModule甚至根ParentModuleProject拥有此结构也会有用吗?

这什么时候有用?如果我想在一个标签中包含所有模块的标签/分支?如果是这样,并且如果我的所有模块都有自己的生命周期,那么可能永远不会出现这种情况,所以我可以在3个父模块中省略这个svn结构吗?

1 个答案:

答案 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