一个带有多个Git存储库的Java项目

时间:2014-09-03 18:48:06

标签: spring git maven

我们有一个大的java web项目,我们在本地使用Git,我们将Stash作为内部Git服务器来提交/推送我们的代码。

以下是我们的git中的所有单独回购:

repo - java/spring/maven/hibernate entity and dao's jar
repo - java/spring/maven - business services 1 which makes use of the previous jar
repo - java/spring/maven - business services 2 which makes use of the previous jar
repo - java/spring/maven - business services 3 which makes use of the previous jar
repo - java/spring/maven/smartgwt - business services 2 which makes use of the previous 3 business service jars.

所有这些都使用自己的maven pom.xml文件单独构建。在这个架构中,当我们添加一个新的DAO方法时,我们将一个类似的业务服务调用, 然后我们添加一个Web服务GET来处理对该新业务服务的调用。

我的一位同事不喜欢git并发现管理这些单独的回购工作太多了,因此和其他许多人一样,他宁愿回到svn。 他还认为分支对每个回购都会变得太多了。我个人认为回到svn会很疯狂,我认为子模块可能是更好的方法。

更好的解决方案是:

repo - Project_BackEnd, which contains 3 or more sub-modules
submodule- java/spring/maven - business services 1 which makes use of the previous jar
submodule- java/spring/maven - business services 2 which makes use of the previous jar
submodule- java/spring/maven - business services 3 which makes use of the previous jar

repo - Project_FrontEnd
submodule - java/spring/maven/smartgwt - business services 2 which makes use of the previous 3 business service jars.

我确实看了一个具有多个Java Spring项目的Git的具体示例,但没有找到任何东西。如果这与其他问题重复,我道歉。

更新: 虽然我不介意在一个整体项目的不同方面单独使用git repos,但我的同事不再是我的专家,发现它很麻烦,并且没有看到git的整体未来好处,我不会&#39我希望我们回到SVN。

我已经在子模块和子树之间做了很多研究,我不知道这些是否符合我们的需求,我知道他们有自己的优点/缺点。< / p>

为后端创建git-repo可能更容易。由于我们使用的是maven,我们可以拥有一个父maven项目,然后创建maven模块。这样,各种后端库将拥有自己的pom.xml文件,并且仍然可以构建不同的jar。

任何这些子模块的任何更改都会触发更改,CI可以对该项目进行构建。

思想?

1 个答案:

答案 0 :(得分:0)

我不太明白你的问题。依赖性应该由Maven处理,因此在VCS中构建代码的方式并不重要。

子模块有自己的问题,许多人试图避免它们。特别是子模块绑定到特定的提交(与SVN外部相反),您需要经常更新子模块。

所以:

  • 使用可以像IntelliJ一样拉/推多个repos的IDE。
  • 将一个Git仓库中的多个仓库与(Maven)父POM和多个模块组合在一起。这样做的主要缺点是,您的CI系统不知道哪个特定模块已经更新,并且当您只需要重建一个模块时可能需要构建整个仓库。