跳过一个模块的 maven 部署

Skip maven deploy for one module

我有一个多模块 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>

模块 ab 是具有 spotify docker plugin.

的 Spring 引导项目

我需要 运行 mvn deploy 才能让 Spotify 插件推送 docker 图片。

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

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project common: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter

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

我尝试使用此命令仅部署 ab,但它对 common:

给出了相同的错误
mvn clean \
   -DdockerRegistryHost=123.dkr.ecr.us-west-1.amazonaws.com/test1 \
   --projects a,b \
   --also-make \
   deploy

您可以通过配置 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 添加到您的命令行。