spring Maven jib在多模块项目中不工作

8ehkhllq  于 2023-11-16  发布在  Spring
关注(0)|答案(1)|浏览(127)

我有一个这样的多模块应用程序:

parent
+ lib_one
+ lib_two
+ spring-parent
  + spring-config
  + spring-app

字符串
现在我想用google jib构建spring-app模块。我已经将其添加到我的parent-pom的插件部分:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>3.4.0</version>
    <configuration>
      <from>
        <image>eclipse-temurin:21-jre-ubi9-minimal</image>
      </from>
      <to>
        <image>DOCKERIMAGE</image>
        <tags>
          <tag>${project.version}</tag>
          <tag>latest</tag>
        </tags>
     </to>
     <container>
      <ports>
        <port>8080</port>
      </ports>
    </container>
  </configuration>
</plugin>


每个不包含容器目标的子模块都得到这些以避免jib被执行:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <skip>true</skip>
  </configuration>
</plugin>


模块spring-app通过<skip>false</skip>和a -config得到这个。
如果我从根目录运行maven clean compile jib:build,我会得到以下异常:

Obtaining project build output files failed; make sure you have compiled your project before tryi
ng to build the image. (Did you accidentally run "mvn clean jib:build" instead of "mvn clean compile jib:build"?)


有人知道我做错了什么吗?
我用的是java 21和spring Boot 3.1。
来自德国的问候!

huus2vyu

huus2vyu1#

您应该在所有模块(包括根pom.xml)中为Jib插件设置<skip>true</skip>,但spring-app除外。
以防万一,我说的是跳过jib-maven-plugin。像你这样跳过spring-boot-maven-plugin不会阻止Jib运行,因为它只是一个不同的插件。

<plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <configuration>
          <!-- we don't want jib to execute on this module -->
          <skip>true</skip>
        </configuration>
      </plugin>

字符串
Jib存储库使用此设置托管multi-module example project。例如,根pom.xmlshared-library子模块跳过Jib插件。

相关问题