【问题标题】:maven-release-plugin in multi-module project having a seperate git repository for each module多模块项目中的 maven-release-plugin,每个模块都有一个单独的 git 存储库
【发布时间】:2014-08-03 18:52:46
【问题描述】:

我想知道是否可以在每个模块都有自己的 git 存储库的多模块项目中使用 maven-release-plugin?像这样的:

parent/
  .git/
  pom.xml
module1/
  .git/
  pom.xml

我设置了一个简单的测试(在 linux 下),“git add”命令失败了(简单):

cd parent && git add -- pom.xml /.../module1/pom.xml

错误信息是

fatal: /.../module1/pom.xml: '/.../module1/pom.xml' is outside repository

我知道这个 git 命令不能工作。 maven-release-plugin 是否能够为每个存储库执行单独的“git add”命令?

对于这种情况,答案是否定的:假设我只有一个 git 存储库。使用平面层次结构还是嵌套层次结构有关系吗?

是否有任何其他选项可用于自动版本控制/发布和保留多个 git 存储库?

【问题讨论】:

    标签: git maven maven-release-plugin


    【解决方案1】:

    自 maven-release-plugin 2.0-beta-5 以来,他们添加了一个名为 commitByProject 的新属性,在我的情况下(恰好是你的情况)让我们提交每个项目的每个子模块(从根 pom 引用,带有 ' git submodule add' 策略)。这样就完成了工作!

    mvn release:prepare -DcommitByProject=true

    【讨论】:

      【解决方案2】:

      您可以使用 git 子模块在您的 git 存储库中拥有其他 git 存储库。但是,如果您的 module1 通过 maven 依赖于 parent(即 <parent> 或 parent 具有dependencyManagement),那么 module1 似乎并不是一个真正的独立模块,在我看来不应该有它自己的存储库。

      关于层次结构,我更喜欢嵌套的层次结构,以便更容易看到父级和模块。

      【讨论】:

      • 子模块似乎没有选择:我得到“致命:Pathspec 'module1/pom.xml' is in submodule 'module1'”
      • 你到底想做什么?
      • 我设置了一个例子:就像我最初的问题一样,但现在 module1 作为 git 子模块嵌套在 parent 中。父级中的“mvn release:prepare”将导致引用的错误消息。如果您的问题更多地是关于我为什么不使用单个存储库的方向:代码当前在 svn 下,每个模块都有自己的主干,分支,......我们的开发人员习惯于只查看历史他们正在进行的项目,如果不同模块的提交混合/干扰,我有点担心他们会感到困惑。
      猜你喜欢
      • 2013-04-24
      • 2018-11-28
      • 1970-01-01
      • 2014-12-14
      • 2012-07-16
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      相关资源
      最近更新 更多