【问题标题】:Maven multimodule build. I want to deploy the ear to our Repository, but not the other modulesMaven 多模块构建。我想将 ear 部署到我们的存储库,而不是其他模块
【发布时间】:2017-05-12 03:44:46
【问题描述】:

我们有一个由 17 个模块组成的多模块项目。有一个基本的 jar 模块。有 15 个 filter jar 模块依赖于该基本 jar。然后是我们构建的包含其他 16 个罐子的 Ear。

我们的构建工作正常,但我们希望将 Ear 部署到我们的 Maven 存储库 - 主要是因为它可以让我们的部署工具轻松访问它。另外,我们可以通过mvn deploy 轻松做到这一点,而无需组合其他工具。

问题在于,当我们说mvn deploy 时,我们部署了 Ear 和其他 16 个 jar。这些 jars 没有在任何其他项目中使用,我们只是不希望它们堵塞我们的 Maven 存储库。

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

【问题讨论】:

  • mvn clean deploy -pl our-ear-module?
  • 您可以在您不喜欢部署到存储库的每个模块中定义与 maven-deploy-plugin 相关的<skip>true</skip>,但我不推荐这样做。此外,您唯一需要的就是一点硬盘空间...对于快照版本,您应该配置清理设置。

标签: maven deployment module


【解决方案1】:

查看文档,我找到了${maven.skip.deploy} 属性。我实际上在父项目中将其设置为true,然后在 EAR 构建中将其设置为 false。这就是我想要的,只部署 EAR。这样,如果添加另一个模块,默认情况下不会部署。

steve c 推荐 mvn -pl core-ear clean deploy 在我的情况下不起作用。我要部署的模块其实是一个模块的一个模块,所以主层build是看不到的。

我们的结构是这样的:

parent --|
         |-engine
         |-filter1
         |-filter2
         .
         .
         |-distribution --|
                          |--jar
                          |--sar
                          |--ear  <-Deploying this one only

khmarbaise 提到在所有模块中设置&lt;skip&gt;true&lt;/skip&gt;,除了我要部署的模块。 khmarbaise 建议不要这样做,我不怪他。但是,这里有几个问题。首先,我们正在做continuous delivery,这意味着我们将在我们的存储库中为每个构建提供一个新版本。我还想确保没有人试图依赖这些罐子。

我在父模块中将属性${maven.deploy.skip} 设置为false。这意味着在我的所有模块中都是这种方式,并且它们都不会部署。我不需要配置我的maven-deploy-plugin 来设置它。

然后,我在我真正想要部署的唯一模块(即分发子模块的 ear 模块)中将 ${maven.deploy.skip} 设置为 true。从父级运行mvn clean deploy 现在只部署我真正想要部署的耳朵分布模块。

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2015-01-30
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多