跳过一个模块的 maven 部署

Kar*_*tik 7 java maven docker spring-boot spotify-docker-client

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

<project>
    ...
    <packaging>pom</packaging>   
    <modules>
        <module>common</module>
        <module>a</module>
        <module>b</module>
    </modules>
</project>
Run Code Online (Sandbox Code Playgroud)

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

<dependency>
    <groupId>my.project</groupId>
    <artifactId>common</artifactId>
    <version>${module.common.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

ModulesabSpring Boot 项目具有spotify docker 插件

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

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

[错误] 无法在项目 common 上执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy):部署失败:在 distributionManagement 元素内的 POM 中或在 - 中未指定存储库元素DaltDeploymentRepository=id::layout::url 参数

搜索此错误,此答案建议在该distributionManagement部分中添加存储库 url 。但我不想部署common. 我只想构建它,因此它作为其他模块中的依赖项被注入并部署这些其他模块。我怎样才能做到这一点?

我尝试仅部署ab使用此命令,但它给出了相同的错误common

mvn clean \
   -DdockerRegistryHost=123.dkr.ecr.us-west-1.amazonaws.com/test1 \
   --projects a,b \
   --also-make \
   deploy
Run Code Online (Sandbox Code Playgroud)

Ste*_*e C 8

您可以通过配置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>
Run Code Online (Sandbox Code Playgroud)

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

  • 不,不是的。始终为可重复性指定插件依赖项。如果您不指定插件版本,那么您将获得与您正在使用的特定 maven 版本相关联的插件版本。另外,我也不相信“像任何其他依赖项一样选择最新版本”是一回事。 (2认同)