gpt4 book ai didi

java - 父项目或模块项目是否应该具有 svn trunk-branch-tag 结构?

转载 作者:行者123 更新时间:2023-12-01 13:14:57 27 4
gpt4 key购买 nike

我有 2 个不同的项目,它们共享一些通用代码。因此,我将创建一个多模块 Maven 项目。

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

-importerModule
--common
--Module1
--Module2

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

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

问题:哪个项目拥有 trunk/tags/branches svn 结构才有意义?只有子模块本身?或者稍后让 webModuleimporterModule 甚至根 ParentModuleProject 拥有此结构也会有用吗?

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

最佳答案

正如您提到的,通用模块是永远不会发布的实用模块,因此为其创建分支/标签/主干文件夹是没有用的。

由于 importerModule/Module1importerModule/Module2webModule/Module1webModule/Module2 已独立发布循环需要为它们提供单独的标签主干和分支文件夹。

由于 SVN 提供了选择维护文件夹结构的灵 active ,因此可以有多种方法来处理该要求,但我喜欢以下一种:

布局

其中 webModule 和 importerModule 将具有标记/主干/分支结构。

--ParentModuleProject

---webModule

-----Trunk

------- common

------- Module1

------- Module2

-----Branches

------- Module1-R1

------- Module2-R3

-----Tags

------- Module1-R1-1.0-120413

------- Module2-R2-2.0-200313

---importerModule

-----Trunk

------- common

------- Module1

------- Module2

-----Branches

------- Module1-R6

------- Module2-R8

-----Tags

------- Module1-R5-1.0-120413

------- Module2-R7-2.0-200313

通过使用此布局,您无需管理每个模块的单独标签、主干和分支文件夹。

由于主干将包含应用程序 webModule 和 importerModule 的关键组件,因此您可以轻松地为 Module1 和 Module2 创建发布分支,例如

svn copy "^/webmodule/trunk/module1" "^/webmodule/branches/module1-r1".

Module1 和 Module2 的单独发布分支将处理不同的发布周期。

由于标签只是您发布的内容的快照,因此将 Module1 和 Module2 的标签保持在一起不会出现这样的问题

svn copy "^/webmodule/branches/module1-r1" "^/webmodule/tags/module1-r1-230413"

希望这有帮助

乔茨纳

关于java - 父项目或模块项目是否应该具有 svn trunk-branch-tag 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22542321/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com