Java 使用maven和多个git存储库—减少痛苦
我们最近从SVN迁移到git,大多数代码都在一个repo中,大多数项目都在自己的repo中(大约70个)。我们从这个java源代码构建了十几个不同的应用程序。这些应用程序都在*nix服务器上运行。我们使用maven和nexus来构建。当功能涉及多个回购协议时,我们中的许多人都在努力开发功能。以下是一些挑战:Java 使用maven和多个git存储库—减少痛苦,java,git,maven,Java,Git,Maven,我们最近从SVN迁移到git,大多数代码都在一个repo中,大多数项目都在自己的repo中(大约70个)。我们从这个java源代码构建了十几个不同的应用程序。这些应用程序都在*nix服务器上运行。我们使用maven和nexus来构建。当功能涉及多个回购协议时,我们中的许多人都在努力开发功能。以下是一些挑战: 开发人员必须分别对每个回购进行分支-我们对一个功能的所有分支使用相同的名称,以减少跟踪的难度 必须更新所有回购协议的POM,以指向每个回购协议工件的更新版本。如果有多个人在同一个分支上工作
- 开发人员必须分别对每个回购进行分支-我们对一个功能的所有分支使用相同的名称,以减少跟踪的难度
- 必须更新所有回购协议的POM,以指向每个回购协议工件的更新版本。如果有多个人在同一个分支上工作,可能会有很多其他人合并pom更改。当我提交对repo的更改时,工件被重命名为“-SNAPSHOT”,这意味着更多的pom更新
- 更改需要按正确的顺序推进,否则我们的自动构建将失败,例如:回购A取决于对回购B的更改;如果在构建和部署repo B之前推送repo A,则不会构建repo A
- 审查该功能的人员必须查看多个回购协议的变化
- 当该功能从其分支合并到(比如)主功能时,必须记住所有涉及的回购协议
- 用maven构建整个代码库需要很长时间。(为什么maven不能更像make,只构建已经改变或其依赖关系已经改变的东西?)
- 每次推送都会启动一大组构建和许多单元测试,而不仅仅是一个repo的工件构建和测试
- 通常在一个或两个回购协议中工作的开发人员更喜欢这种新的多重回购世界,并且会抵制这种改变
此外,即使使用单个repo,您也不需要按源引用所有内容,也不需要将二进制文件用于基本库。当基础库发生更改时,进行更改的人员还可以一次性更新所有引用,以便所有项目都是最新的。我觉得您的问题太宽泛了。你可能想缩小范围以得到答案。