具有自己的 SCM 布局的 Maven 多模块 - 如何构建标签?

Posted

技术标签:

【中文标题】具有自己的 SCM 布局的 Maven 多模块 - 如何构建标签?【英文标题】:Maven multimodule with own SCM layout - how to build the tag? 【发布时间】:2013-05-24 00:13:03 【问题描述】:

假设我有一堆 maven 模块,每个模块都有自己的主干/分支/标签。如下图所示。

portal_root
    +project1
        +tags
        +branches
        +trunk
    +project2
        .
        .
        .
    +parent
    pom.xml

如果遵循multi module maven project with parent pom and svn layout 答案中建议的结构,我会将父项目与子项目处于同一级别,并通过相对路径引用它。但是,我认为这会使发布政策相当复杂。

考虑到源是从trunk复制到tags/v*/,到父级的相对路径不再有效:比较../parent/和../../parent。此外,标记的子代没有有效的父代,因为旧的父代引用了主干。这引出了一个问题:为具有自己的 SCM 层次结构的模块构建标记源的 Maven 最佳实践是什么?

【问题讨论】:

【参考方案1】:

与其使用相对路径,不如考虑在公司 Nexus 存储库(如果您的团队很小,则在每个开发人员本地 maven 存储库本地)构建和分发您的父工件。

然后使用标准 maven 坐标引用这个父级,maven 将尝试解析它,因为它是一个依赖项。

然而,这意味着当您对父级进行更改时,您必须更新所有下游工件以使更改生效

【讨论】:

以上是关于具有自己的 SCM 布局的 Maven 多模块 - 如何构建标签?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git 发布多模块 maven 项目

分层多模块项目的 Maven 命名约定

Maven发布插件和scm插件配置

具有父 POM 的多模块项目的 Maven 版本控制

具有多模块的 Maven 发布插件,正在寻找测试 jar

带有 git 存储库的 Maven 发布插件忽略 scm.user scm.password