如何只部署多模块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.jar
和 module2.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>
我有一个多模块 Maven 项目,只想部署 2 个子模块:
pom.xml // parent pom
module1
--pom.xml
module2
--pom.xml
module3
--pom.xml
仅应部署 module1.jar
和 module2.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>