我的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>
我有以下用例。
为此,我在配置文件下添加了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。
还有其他更好的方法吗?或者,是否可以使用maven参数跳过部署?
谢谢
答案 0 :(得分:4)
我认为您可以通过使用属性而不是配置文件来执行所需的操作。
只需删除docker
配置文件并将配置直接放在POM内,以下命令应该可以使用:
mvn -Dmaven.deploy.skip deploy
仅部署Docker映像(跳过默认的deploy
阶段)mvn -Ddockerfile.skip deploy
仅将工件部署到存储库管理器。 dockerfile-maven-plugin
documentation dockerfile.skip
)
mvn deploy
来同时部署(工件和Docker映像)