我有一个这样的多模块应用程序:
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。
来自德国的问候!
1条答案
按热度按时间huus2vyu1#
您应该在所有模块(包括根
pom.xml
)中为Jib插件设置<skip>true</skip>
,但spring-app
除外。以防万一,我说的是跳过
jib-maven-plugin
。像你这样跳过spring-boot-maven-plugin
不会阻止Jib运行,因为它只是一个不同的插件。字符串
Jib存储库使用此设置托管multi-module example project。例如,根
pom.xml
和shared-library
子模块跳过Jib插件。