我的应用程序使用maven-shade-plugin将东西打包到单个fatjar中,然后我想使用dockerfile-maven-plugin构建一个docker映像,我的问题是我可以正确地设置pom文件,这样它才能正常工作。结果是docker插件在创建jar文件之前运行.
我试图在prepare-package上强制创建prepare-package,并在package上构建docker映像,但它没有像预期的那样工作.有什么想法吗?
编辑:添加pom代码段
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${dockerfile-maven.version}</version>
<configuration>
<repository>test-docker-image</repository>
<tag>${docker.tag}</tag>
<buildArgs>
<JAR_FILE>${project.artifactId}-${project.version}-fat.jar</JAR_FILE>
<CONFIGURATION_FILE>configuration.json</CONFIGURATION_FILE>
</buildArgs>
</configuration>
<executions>
<execution>
<goals>
<goal>build</goal>
<!-- <goal>push</goal> -->
</goals>
<phase>install</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${maven.shade.plugin.version}</version>
<executions>
<execution>
<goals>
<goal>shade</goal>
</goals>
<phase>package</phase>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>io.vertx.core.Launcher</Main-Class>
<Main-Verticle>MyVerticle</Main-Verticle>
</manifestEntries>
</transformer>
</transformers>
<minimizeJar>false</minimizeJar>
<outputFile>${project.build.directory}/deploy/${project.artifactId}-${project.version}-fat.jar</outputFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>发布于 2021-05-05 18:23:10
我把这两个插件按相同的顺序列出(docker-maven-plugin在maven-shade-plugin之前),并看到了相同的问题。我发现Maven按照列出的顺序在同一阶段执行插件,因此移动maven-shade-plugin首先在本地解决了这个问题。(旧版本的Maven不会以这种方式订购插件,所以如果可能的话使用最新版本。)
这并不能解释为什么当您将它们更改为使用不同的阶段时,它不适用于您,但我建议至少尝试一下重新排序。还请确保您正在使用最新版本的相关插件,如maven-release-plugin。
完成上述所有操作后,我仍然在构建环境中看到不想要的行为,因为我的项目的父项目包含了docker-maven-plugin的执行;我正在自定义它并在我自己的项目中重新排序这一事实并没有帮助,尽管不清楚它在本地工作的原因。Maven构建概要文件也会对排序产生类似的影响。我的解决方案是将docker-maven-plugin:build执行绑定到install阶段。
mvn help:effective-pom的输出应该允许您查看插件、执行和配置文件的确切列表,这样您就可以准确地看到项目的顺序。请注意,配置文件是执行自下而上的,这是相反的插件!
https://stackoverflow.com/questions/50724223
复制相似问题