Maven多模块构建。我想将耳朵部署到我们的存储库,而不是其他模块

时间:2017-05-12 03:44:47

标签: maven deployment module

我们有多个模块项目,包含17个模块。有一个基础jar模块。有15个过滤器jar 模块依赖于该基础jar。然后,我们制作的耳朵包含其他16个罐子。

我们的构建工作正常,但我们想将我们的Ear部署到我们的Maven存储库 - 主要是因为它可以让我们的部署工具轻松实现。另外,我们可以通过mvn deploy轻松完成此操作,而无需将其他工具放在一起。

问题在于,当我们说mvn deploy时,我们会部署Ear和其他16个罐子。这些罐子不用于任何其他项目,我们根本不希望它们堵塞我们的Maven存储库。

当我说mvn deploy时,有没有办法指定特定模块没有放入Maven存储库?

1 个答案:

答案 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只会部署我实际想要部署的耳分发模块。