我们有多个模块项目,包含17个模块。有一个基础jar模块。有15个过滤器jar 模块依赖于该基础jar。然后,我们制作的耳朵包含其他16个罐子。
我们的构建工作正常,但我们想将我们的Ear部署到我们的Maven存储库 - 主要是因为它可以让我们的部署工具轻松实现。另外,我们可以通过mvn deploy
轻松完成此操作,而无需将其他工具放在一起。
问题在于,当我们说mvn deploy
时,我们会部署Ear和其他16个罐子。这些罐子不用于任何其他项目,我们根本不希望它们堵塞我们的Maven存储库。
当我说mvn deploy
时,有没有办法指定特定模块没有放入Maven存储库?
答案 0 :(得分:0)
查看文档,我找到了${maven.skip.deploy}
属性。我实际上在父项目中将其设置为true
,然后在EAR构建中将其设置为false。这就是我想要的,只部署EAR。这样,如果添加了另一个模块,默认情况下不会部署它。
steve c建议mvn -pl core-ear clean deploy
在我的环境中不起作用。我想要部署的模块实际上是模块的一个模块,所以主级别的构建没有看到它。
我们的结构是这样的:
parent --|
|-engine
|-filter1
|-filter2
.
.
|-distribution --|
|--jar
|--sar
|--ear <-Deploying this one only
khmarbaise提到了除我要部署的模块之外的所有模块中的<skip>true</skip>
设置。 khmarbaise建议不要这样做,我不会责怪他。但是,这里有几个问题。首先,我们正在进行continuous delivery这意味着我们将在每个构建的存储库中都有一个新版本。我也想确保没有人试图依赖这些罐子。
我在父模块中将属性${maven.deploy.skip}
设置为false
。这意味着它在我的所有模块中都是这样,并且它们都不会部署。我不需要配置maven-deploy-plugin
来设置此内容。
然后我将${maven.deploy.skip}
设置为我实际想要部署的唯一模块中的true
(这是分发子模块的ear模块)。现在,从父级运行mvn clean deploy
只会部署我实际想要部署的耳分发模块。