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

时间:2018-08-06 19:04:01

标签: 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>

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>

我有以下用例。

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

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

  

MVN部署

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

  

mvn deploy -P docker

以上命令将部署工件和docker映像。

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

要仅部署Docker映像,

我正在将以下配置添加到deploy插件中,

<configuration>
                    <skip>true</skip>
                </configuration>

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

<execution>
                        <id>default-deploy</id>
                        <phase>none</phase>
                    </execution>

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

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

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

谢谢

1 个答案:

答案 0 :(得分:4)

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

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