首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不同阶段运行maven-shade和dockerfile-maven

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

Stack Overflow用户
提问于 2018-06-06 15:31:06
回答 1查看 322关注 0票数 2

我的应用程序使用maven-shade-plugin将东西打包到单个fatjar中,然后我想使用dockerfile-maven-plugin构建一个docker映像,我的问题是我可以正确地设置pom文件,这样它才能正常工作。结果是docker插件在创建jar文件之前运行.

我试图在prepare-package上强制创建prepare-package,并在package上构建docker映像,但它没有像预期的那样工作.有什么想法吗?

编辑:添加pom代码段

代码语言:javascript
运行
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2021-05-05 18:23:10

我把这两个插件按相同的顺序列出(docker-maven-pluginmaven-shade-plugin之前),并看到了相同的问题。我发现Maven按照列出的顺序在同一阶段执行插件,因此移动maven-shade-plugin首先在本地解决了这个问题。(旧版本的Maven不会以这种方式订购插件,所以如果可能的话使用最新版本。)

这并不能解释为什么当您将它们更改为使用不同的阶段时,它不适用于您,但我建议至少尝试一下重新排序。还请确保您正在使用最新版本的相关插件,如maven-release-plugin

完成上述所有操作后,我仍然在构建环境中看到不想要的行为,因为我的项目的父项目包含了docker-maven-plugin的执行;我正在自定义它并在我自己的项目中重新排序这一事实并没有帮助,尽管不清楚它在本地工作的原因。Maven构建概要文件也会对排序产生类似的影响。我的解决方案是将docker-maven-plugin:build执行绑定到install阶段。

mvn help:effective-pom的输出应该允许您查看插件、执行和配置文件的确切列表,这样您就可以准确地看到项目的顺序。请注意,配置文件是执行自下而上的,这是相反的插件!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50724223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档