如何只部署多模块maven项目的一部分?

How to deploy only part of a multi module maven project?

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

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

仅应部署 module1.jarmodule2.jar

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

因此,作为多模块项目的 deploy/release 部分并不是绝对错误的。在上面的示例中,有一种情况是您需要构建一些模块,另一种情况是您想要构建所有模块。在这些情况下,您可以使用个人资料来做到这一点。

示例:在父级中 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>

然后是“clientA”的 Jenkins 作业:

clean package -Pbase-functionality,new-feature

'clientB' 的詹金斯工作地点:

clean package -Pbase-functionality

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

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

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

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

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