【问题标题】:How to split up git repo and apply Maven submodules and Maven parent?如何拆分 git repo 并应用 Maven 子模块和 Maven 父级?
【发布时间】:2019-04-26 15:58:17
【问题描述】:

我需要一些关于如何配置多个 repo 的建议,以便它们共享一个 Maven 父级,并在 Maven 根项目中配置为子模块。

我正在维护开源项目Simple Java Mail,并且由于可选功能越来越大,我计划将项目拆分为子模块,每个子模块都有自己的 GIT 存储库。

  1. 我首先关心的是应该有一个共享的 Maven 父级 config 处理所有默认测试和构建配置以及 默认测试和实用程序依赖项。那是我可以的一个额外的回购 想想。
  2. 接下来,使用相同的工具轻松构建和发布所有内容 版本号,我认为有一个 Maven 子模块 设置会 有用。如何在 GIT 存储库中进行设置?我的第一个想法 将是主/根 Maven 项目的另一个存储库,它定义 子模块,然后检查这个和所有其他 repo 的相同 文件夹和主 Maven 项目将找到模块项目 与..\submodule-xyz 相关文件夹。

我之前也配置过类似的设置,但所有这些都在一个存储库中(在过去的 Subversion 时代)。谁能建议如何通过拆分回购最好地解决这个问题?最好我会有一个用于父 pom 和 main/root pom 的 repo(这很常见吗?)。与 git 子模块结合是否更可取?

【问题讨论】:

    标签: git maven


    【解决方案1】:

    模块这个术语在这里有点超载。

    是的,您可以在一个 repo 中定义一个父 pom,声明一个 multi-module maven project,每个模块引用一个子文件夹。

    这些子文件夹可以通过git submodule add 命令创建,引用每个子项目版本控制的远程存储库。
    子文件夹相对于父目录的根文件夹,但不需要../。

    每个子模块 repo 可以有自己的pom.xml,它将主项目 pom 引用为父 pom。

    【讨论】:

    • 好的,所以你会推荐使用 git 子模块的子文件夹而不是子模块而不是子文件夹中不使用 git 子模块的子文件夹,我理解正确吗?
    • @BennyBottema 是的,这允许您按照自己的节奏更新每个子模块,同时通过主父项目保持连贯的项目。关于 pom.xml,请参见此处的示例:smartics.eu/confluence/display/BLOG/2013/07/22/…(不涉及 git 子模块:这只是为了说明在 maven 多模块项目中使用父 pom)
    • 谢谢。还有一个问题,我对 git 子模块没有太多经验(我很快就会熟悉自己),但是为新开发人员设置是否容易(即他们是否必须在每次结帐时手动执行 git submodule add回购)?
    • 在主题上引用 Github's own blog:您可以指示 git clone 自动检出子模块:git clone --recursive <project url>
    • @BennyBottema 是的,就是这个想法:git clone --recursive 第一次,git submodule update --remote 每次他们想将子模块更新为 master 分支的最新提交。
    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 2014-03-28
    • 2015-02-25
    • 2020-04-26
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多