【问题标题】:Maven release and recomposed POM familyMaven 发布并重组 POM 家族
【发布时间】:2015-06-05 09:50:31
【问题描述】:

我在公司的特定 Maven 结构中运行 Maven 发布插件时遇到了一些问题。让我解释一下我所指的重组家庭的概念。我的项目是多模块项目,其中每个模块的父级可能与其亲生父级不同。

project/
    pom.xml (the natural multimodule reactor father) (I list as modules all that follows)
    module1/pom.xml (my parent is NOT ../pom.xml, I'm a half sibling)
    module2/pom.xml (my parent is ../pom.xml, I'm a natural child) (I have a dependency on module1)
    project-war/pom.xml (my parent is NOT ../pom.xml, I'm a half sibling)

我们采用这种“养父母”策略的原因是,我们希望默认为某些特定的“收养的兄弟姐妹”激活一些插件。例如,每个 WAR 项目都需要定义一个特定的 maven-resource-plugin 执行 ID。由于我们要生成大约 80 个 WAR,想象一下如果我们要为所有 WAR 添加额外的执行步骤,需要进行维护。这非常适合开发目的,我们确实有有效且正在运行的 SNAPSHOT 构建和部署。

现在我们要发布,maven-release-plugin 似乎不喜欢这种特定的结构。简而言之,由于module2需要module1,但module1有不同的父级,release插件将module1保持为SNAPSHOT。

我的问题是,有没有人设法与重组的家庭成员一起发布项目?我需要在发布插件中进行任何配置来启用此类项目的完整发布吗?

【问题讨论】:

    标签: maven maven-release-plugin


    【解决方案1】:

    违反模块之间的继承是父级会给你带来比其他任何事情更多的问题。

    您唯一的选择是:

    • 修复父子模型,以便发布插件可以完成其工作(然后将这些模块激活移动到您想要的子节点)
    • 手动进行标记、更改版本、构建+发布(mvn deploy 以及可选的站点部署)

    【讨论】:

      【解决方案2】:

      经过一些进一步的测试,这是我对这个问题的结论。

      Maven 可以在一个简单的条件下处理重组后的家庭:家庭的所有成员都存在于反应器中。

      这意味着拥有一个“超级反应器”,它引用您要发布的项目以及可能由某些模块声明的父 pom。当然,发布插件随后会释放这个超级反应堆中的所有内容。如果您有许多项目都引用相同的父项目,您应该一次性发布它们。

      此外,要正确生成构建模型,所有相对路径都必须正确。在我的具体情况下,我们想避免这样的事情,我想我们又回到了设置一个固定的文件夹结构。

      从发布插件中排除一些项目可能很方便,但这当然会造成潜在的不稳定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-02
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        • 2015-02-13
        相关资源
        最近更新 更多