我们有一个大的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可以对该项目进行构建。
思想?
答案 0 :(得分:0)
我不太明白你的问题。依赖性应该由Maven处理,因此在VCS中构建代码的方式并不重要。
子模块有自己的问题,许多人试图避免它们。特别是子模块绑定到特定的提交(与SVN外部相反),您需要经常更新子模块。
所以: