Maven跳过部署并仅推送Docker映像

use*_*872 4 maven docker

我的Maven项目中同时有deploy插件和dockerize插件。

部署插件

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-deploy</id>
                        <phase>deploy</phase>
                    </execution>
                </executions>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

Dockerize插件,

<profiles>
        <profile>
            <id>docker</id>
            <properties>
                <assembly.skipAssembly>true</assembly.skipAssembly>
            </properties>
            <build>
                <finalName>${project.artifactId}</finalName>
                <plugins>
                    <plugin>
                        <groupId>com.spotify</groupId>
                        <artifactId>dockerfile-maven-plugin</artifactId>
                        <version>${version.docker.plugin}</version>
                        <executions>
                            <execution>
                                <id>dockerize-app</id>
                                <goals>
                                    <goal>build</goal>
                                    <goal>push</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <repository>${docker.image-prefix}${project.artifactId}</repository>
                            <tag>${project.version}</tag>
                            <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                            <buildArgs>
                                <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                            </buildArgs>
                            <resources>
                                <resource>
                                    <targetPath>/</targetPath>
                                    <directory>${project.build.directory}</directory>
                                    <include>${project.artifactId}.war</include>
                                </resource>
                            </resources>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
Run Code Online (Sandbox Code Playgroud)

我有以下用例。

  1. 单独部署工件
  2. 单独部署Docker映像
  3. 部署工件和Docker映像

为此,我在配置文件下添加了Docker插件。因此,在通过配置文件名称时将部署Docker映像。

mvn部署

上面的命令将仅部署工件。

mvn deploy -P泊坞窗

上面的命令将部署工件和Docker映像。

但是,我无法仅部署Docker映像。

为了只部署Docker映像,我将以下配置添加到deploy插件中,

<configuration>
                    <skip>true</skip>
                </configuration>
Run Code Online (Sandbox Code Playgroud)

或者,将default-deploy设置为none。

<execution>
                        <id>default-deploy</id>
                        <phase>none</phase>
                    </execution>
Run Code Online (Sandbox Code Playgroud)

以上两种方法都需要更改pom。

  1. 另一种方法是也创建要部署的配置文件,以便我们可以传递所需的配置文件。

还有其他更好的方法吗?或者,是否可以使用Maven参数跳过部署?

nor*_*bjd 5

我认为您可以通过使用属性而不是配置文件来执行所需的操作。只需删除docker配置文件,然后将配置直接放在POM中,以下命令应该可以使用:

  • mvn -Dmaven.deploy.skip deploy仅部署Docker映像(deploy跳过默认阶段)
  • mvn -Ddockerfile.skip deploy仅将工件部署到资源库管理器。文档dockerfile.skip中介绍了跳过目标的选项(如)dockerfile-maven-plugin
  • mvn deploy 同时部署(工件和Docker映像)