在不同阶段运行maven-shade和dockerfile-maven

时间:2018-06-06 15:31:07

标签: maven maven-plugin maven-shade-plugin

我的应用使用SomeoneElse将内容打包到单个maven-shade-plugin中,然后我想使用fatjar构建docker图片,我的问题是我可以设置pom文件正确,所以它会工作。 发生的事情是dockerfile-maven-plugin插件在docker文件创建之前运行...

我试图在jar上强制jar创建,prepare-package上的docker图片构建,但它没有按预期工作。 .. 任何想法?

编辑:添加了pom片段

package

1 个答案:

答案 0 :(得分:0)

我以与您相同的顺序(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 的输出应该让您看到插件、执行和配置文件的确切列表,以便您可以准确了解您的项目的顺序。