Gradle - 多项目和Git仓库

8
我们有三个项目和一个共享在这些项目之间的第四个项目。
在gradle中,多个项目需要创建包装器项目,并将所有子项目包含在其中。
我们每个子项目都由不同的团队成员负责,并使用git作为svn。
在进入gradle之前,我们的担忧是,我们只会有一个git代码库,其中包括所有子项目的包装器项目,而不是4个不同的代码库,每个子项目一个。
1)我们错过了什么吗?
2)是否可以在多个项目中创建4个代码库?
3)我们的要求之一是部署单个war(例如只有4个中的webapp#1),使用多个项目模板是否可以实现?
2个回答

4
我在同一个问题上遇到了这个问题,并且后来有人向我指出另一个选项(它实际上是https://dev59.com/4XrZa4cB1Zd3GeqP2W9g#20678444下所列的第三个选择的变体),看起来像是一种简洁的技巧:
您将子项目保留在单独的Git存储库中,并通过设置相应的rootDir属性在根项目内部指向它们。这显然需要一个固定的检出布局,但通常情况下都是如此。
这种方法在这里描述:https://medium.com/codequest/gradle-multi-project-build-substituting-jar-dependencies-with-local-projects-4a5323f8680b 使用Gradle 7.3+进行更新:现在会产生警告,并且可能在未来的某个时间停止工作:
Subproject ':xyz' has location '...\xyz' which is outside of the project root.
This behaviour has been deprecated and is scheduled to be removed in Gradle 8.0.
Consult the upgrading guide for further information: 
https://docs.gradle.org/7.3.1/userguide/upgrading_version_7.html#deprecated_flat_project_structure

文章中描述的方法是将独立的项目/仓库纳入父项目的最佳方式。无需移动任何内容,现有的构建流程也只需要进行非常少量的更改。如果可以的话,我会多次点赞这个答案 :) - Paul

4

广告1) 你有一些选择:

  • 使用单个Git仓库。
  • 使用多个Git仓库,并通过二进制存储库(例如Artifactory)交换构建产物,其中由CI作业定期生成构建产物。
  • 使用类似Github子模块的东西创建一个“虚拟”的整体Git仓库(不建议使用该方法)。

广告2) Gradle并不在乎构建由多少Git仓库组成,只要settings.gradle指向的所有内容(至少所有构建脚本)在构建开始时存在于磁盘上即可。当然,对于开发人员(和CI管理员)来说,同时操纵多个Git仓库并将它们放置在正确的(相对)位置可能会很不方便。

广告3) 是的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接