【问题标题】:Skip maven deploy for one module跳过一个模块的 Maven 部署
【发布时间】:2019-10-10 14:18:37
【问题描述】:

我有一个多模块 Maven 项目。父 pom 看起来像这样:

<project>
    ...
    <packaging>pom</packaging>   
    <modules>
        <module>common</module>
        <module>a</module>
        <module>b</module>
    </modules>
</project>

common 构建一个 jar,作为依赖添加到其他模块中,如下所示:

<dependency>
    <groupId>my.project</groupId>
    <artifactId>common</artifactId>
    <version>${module.common.version}</version>
</dependency>

模块a 和b 是具有spotify docker plugin 的Spring Boot 项目。

我需要能够运行 mvn deploy 才能让 spotify 插件推送 docker 映像。

mvn install 工作正常,它构建了 docker 镜像。但是为了推动它们,当我运行mvn deploy 时,它会为common 模块抛出错误:

[ERROR] 未能执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (默认部署)项目常见:部署失败:存储库 未在 distributionManagement 内的 POM 中指定元素 元素或在 -DaltDeploymentRepository=id::layout::url 参数中

搜索此错误时,this answer 建议在 distributionManagement 部分添加存储库 url。但我不想部署common。我只是想构建它,所以它作为依赖注入到其他模块中并部署那些其他模块。我该怎么做?

我尝试使用此命令仅部署 a 和 b,但它对 common 给出了相同的错误:

mvn clean \
   -DdockerRegistryHost=123.dkr.ecr.us-west-1.amazonaws.com/test1 \
   --projects a,b \
   --also-make \
   deploy

【问题讨论】:

  • 您想将此模块设置为从不部署吗?
  • @chrylis 当然,它不应该被部署,只是作为依赖添加。
  • 您是否尝试过将maven-deploy-plugin 配置为 executions=none?

标签: java maven spring-boot docker spotify-docker-client


【解决方案1】:

你可以通过配置maven-deploy-plugin来完成你想要的。

尝试将以下内容添加到您的父 pom:

<build>
    ...
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>3.0.0-M1</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
    ...
 </build>

或将-Dmaven.deploy.skip=true 添加到您的命令行。

【讨论】:

  • 谢谢。有什么理由在这里指定version?如果我们不指定它,它会像任何其他依赖项一样选择最新版本吗?
  • 不,它没有。始终为可重复性指定插件依赖项。如果您不指定插件版本,那么您将获得与您正在使用的特定版本的 maven 关联的版本。另外,我也不认为“像任何其他依赖项一样选择最新版本”是一回事。
  • @steve maven 将如何知道要跳过上传哪些工件?
  • @SteveC 如何在运行时使用-Dmaven.deploy.skip=true跳过特定模块的 maven 部署
  • @RishabPrasad,我认为你不能那样做。您需要使用配置文件来执行此操作。
猜你喜欢
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多