【问题标题】:How to configure scm in flat multi-module projects in maven?如何在maven的平面多模块项目中配置scm?
【发布时间】:2012-08-31 00:01:04
【问题描述】:

我正在使用以下项目结构

parent
   +-- pom.xml (parent and reactor)
module-1
   +-- pom.xml
module-...
   +-- pom.xml

我希望能够在父项目上执行mvn release:prepare,并在 svn 中拥有一致的标签结构。

现在,除了模块的标记之外,一切似乎都工作正常,也就是说,mvn release:prepare 将标记父项目,但不会标记子项目。我已经在 parent-pom 的配置中找到并尝试了开关commitByProject。我已经在 moduel-poms 中输入和删除了 scm 配置,我尝试在 module-poms 中配置 release-plugin 都无济于事。发布步骤从不要求我为任何模块提供标记名,因此以后不会在项目中创建标记。

如何配置父模块和模块,以便mvn release:prepare 标记模块?

【问题讨论】:

    标签: configuration maven-2 maven-release-plugin


    【解决方案1】:

    经过无数小时的搜索,我不再假设,可以使用 maven 发布插件独立于其他模块标记每个模块。

    我发现(并且丢失了)一个明确的评论,这在发布插件中是不可能的,并且还有进一步的提示,例如,发布插件在非交互模式下只接受一个 scm 标签。

    由于我是 Java 开发人员,而不是 maven 开发人员,因此我拒绝更改我的包结构,因此只能手动进行标记。

    【讨论】:

      【解决方案2】:

      我建议重新组织结构以适应 Maven 的最佳实践,如下所示:

      root (pom.xml; parent)
        +-- module-1 (pom.xml)
        +-- module-2 (pom.xml)
        +-- module-...
      

      这将使您的 Maven 生活更轻松,也可以通过 mvn release:prepare 等进行发布。

      我假设您在 VCS 中具有以下文件夹结构:

      root 
        +-- parent (pom.xml)
        +-- module-1 (pom.xml)
        +-- module-2 (pom.xml)
        +-- module-...
      

      root 是从版本控制中检出的文件夹(SVN 中的主干;或主 git)。

      如果您在给定模块中提供了到父级的正确相对路径,那么一切都应该可以正常工作....在父级中配置 scm 部分。

      【讨论】:

      • 鉴于您对重组项目的建议,我如何防止日食中的开发中断?然后,我如何找到一个真正独立于其他模块标记每个模块的解决方案?
      猜你喜欢
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 2016-04-16
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      相关资源
      最近更新 更多