我已经在我的Maven项目中部署了插件和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>
文件插件,
<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>
我有下面的用例。
为了实现这一点,我在profile下添加了Docker插件。这样,Docker映像将在传递配置文件名称时被部署。
mvn部署
上面的命令只部署工件。
mvn部署-P码头
上面的命令将部署工件& Docker映像。
但是,我无法仅仅部署Docker映像。
为了只部署Docker映像,我在中添加了下面的配置,
<configuration>
<skip>true</skip>
</configuration>
或者,将默认部署设置为none。
<execution>
<id>default-deploy</id>
<phase>none</phase>
</execution>
以上两种方法需要改变pom。
还有其他更好的方法吗?或者,使用Maven参数可以跳过部署吗?
发布于 2018-08-13 08:05:08
我认为你可以通过使用属性而不是配置文件来做你想做的事情。只要删除docker
配置文件并将配置直接放在POM中,下面的命令就可以工作了:
mvn -Dmaven.deploy.skip deploy
(跳过默认的deploy
阶段)mvn -Ddockerfile.skip deploy
只将工件部署到存储库管理器。跳过目标的选项(如dockerfile.skip
)在 documentation上进行了描述mvn deploy
(工件和Docker映像)https://stackoverflow.com/questions/51714101
复制相似问题