我的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)
我有以下用例。
为此,我在配置文件下添加了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。
还有其他更好的方法吗?或者,是否可以使用Maven参数跳过部署?
我认为您可以通过使用属性而不是配置文件来执行所需的操作。只需删除docker配置文件,然后将配置直接放在POM中,以下命令应该可以使用:
mvn -Dmaven.deploy.skip deploy仅部署Docker映像(deploy跳过默认阶段)mvn -Ddockerfile.skip deploy仅将工件部署到资源库管理器。文档dockerfile.skip中介绍了跳过目标的选项(如)dockerfile-maven-pluginmvn deploy 同时部署(工件和Docker映像)| 归档时间: |
|
| 查看次数: |
1439 次 |
| 最近记录: |