问题描述
pom.xml // parent pom
module1
--pom.xml
module2
--pom.xml
module3
--pom.xml
仅应部署module1.jar
和module2.jar
。
解决方法
根据我的个人经验,我们有一个多行家项目。许多客户拥有许多模块的功能,而其他客户则拥有它们。例如,当我们为“ clientA”构建时,我们希望詹金斯打包“ 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
在詹金斯(Jenkins)工作中的“ clientB”位置:
clean package -Pbase-functionality
注意:正如khmarbaise在下面的评论中所述,这种方法有同样的陷阱,应尽可能避免。
,我在以下问题中找到了解决方案:
How to Deploy only the sub-modules using maven deploy?
对于不应部署的模块,应将以下属性添加到设置为{{1}的pom.xml
中:
false