需求
Maven 默认打好的 Jar 或 War 包放在项目的 target
目录下。现需要在 Maven 的 dockerfile-maven-plugin
插件的上下文目录 docker-context
下使用这个包,即配置 Maven 插件,让 Maven 在 package
阶段完成时,自动将包文件复制到 docker-context
目录下。
实现
借助 maven-antrun-plugin
插件实现 clean
阶段自动删除,package
阶段自动复制的功能:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<!-- version 从父 POM 继承 -->
<!-- <version>1.8</version> -->
<executions>
<execution>
<!-- 保证 id 唯一即可 -->
<id>delete</id>
<!-- 指定在 Maven 的 clean 阶段执行 -->
<phase>clean</phase>
<configuration>
<target>
<!-- 删除复制的包 http://ant.apache.org/manual-1.9.x/Tasks/delete.html -->
<delete file="docker-context/app.${project.packaging}"/>
</target>
</configuration>
<goals>
<!-- 执行上述 target 标签配置的命令 -->
<goal>run</goal>
</goals>
</execution>
<execution>
<id>copy</id>
<!-- 指定在 Maven 的 package 阶段执行 -->
<phase>package</phase>
<configuration>
<target>
<!-- 复制生成的包到指定目录 http://ant.apache.org/manual-1.9.x/Tasks/copy.html -->
<copy file="target/${project.build.finalName}.${project.packaging}" tofile="docker-context/app.${project.packaging}"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>