【问题标题】:How to deploy only part of a multi module maven project?如何仅部署多模块 Maven 项目的一部分?
【发布时间】:2020-08-24 19:20:18
【问题描述】:

我有一个多模块 maven 项目,只想部署 2 个子模块:

pom.xml // parent pom
module1
--pom.xml
module2
--pom.xml
module3
--pom.xml

只应部署module1.jarmodule2.jar

【问题讨论】:

  • 错误方式导致多模块打算一起部署/发布。
  • 我明白了...谢谢您的澄清。然后应该拆分
  • 问题是为什么你只想部署两个模块?与其他模块无关?
  • 只有项目war文件的子模块与应用程序在wildfly服务器上运行相关。其他不相关。
  • 这根本不是原因。这些模块可以简单地部署到存储库管理器中,您只能使用 war 文件在 wildfly 上部署。

标签: maven deployment multi-module


【解决方案1】:

我在以下问题中找到了解决方案:

How to Deploy only the sub-modules using maven deploy?

对于不应部署的模块,应将以下属性添加到 pom.xml 设置为 false

 <properties>
     <maven.deploy.skip>true<maven.deploy.skip>
 <properties>

【讨论】:

    【解决方案2】:

    根据我的个人经验,我们有一个多 Maven 项目。许多模块是一些客户拥有的功能,而其他一些客户则拥有它们。例如,当我们为“clientA”构建时,我们希望 Jenkins 打包“module1”、“module2”和“module3”,但是当我们为“clientB”构建时,我们只想打包“module1”和“module2”,以便给他基本功能。

    因此,部署/发布多模块项目的一部分并不是绝对错误的。在上面的示例中,有一种情况是您需要构建一些模块,另一种情况是您要构建所有模块。在这些情况下,您可以使用配置文件来做到这一点。

    示例:在父 pom.xml 中

        <profiles>
            <profile>
                <id>base-functionality</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <modules>
                    <module>/module1</module>
                    <module>/module2</module>
                </modules>
            </profile>
            <profile>
                <id>new-feature</id>
                <activation>
                    <activeByDefault>false</activeByDefault>
                </activation>
                <modules>
                    <module>/module3</module>
                </modules>
            </profile>
        </profiles>
    

    然后在 Jenkins 上为“clientA”工作:

    clean package -Pbase-functionality,new-feature
    

    'clientB' 的 Jenkins 工作在哪里:

    clean package -Pbase-functionality
    

    注意:正如 khmarbaise 在下面的评论中所说,这种方法有同样的缺陷,应尽可能避免。

    【讨论】:

    • 我强烈反对这种做法。 blog.soebes.de/blog/2013/11/09/…
    • khmarbaise,我同意你的看法。弄乱 Maven 配置文件应该尽可能简单,以避免陷入陷阱。编辑了我的评论,以明确表示应尽可能避免这种情况。
    • 问题不在于这里的使用配置文件。问题是这会产生发布问题,然后使用工具(发布插件/版本插件等)是的配置文件也是如此......
    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 2021-09-04
    • 2012-03-19
    • 2012-03-11
    • 2011-07-21
    • 2017-11-07
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多