gpt4 book ai didi

java - Maven:构建子项目的 Docker 镜像

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:37 24 4
gpt4 key购买 nike

我的项目具有以下结构:

pom.xml
|
x----child1
| |
| x----pom.xml
|
x----child2
|
x----pom.xml

有一个 poms 父亲和两个 child poms。子项目的构建使用 Spotify 插件来生成项目的 Docker 镜像。我的问题是,如何从根目录调用构建?我基本上需要调用在子模块上构建的 Spotify 插件。我尝试使用

mvn clean install

但是子项是使用 maven-compiler-plugin 构建的,而不是使用 docker-maven-plugin 构建的。

这是我在 children 中使用的构建:

<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${spotify.plugin.version}</version>
<configuration>
<imageName>childImage</imageName>
<dockerDirectory>${project.build.directory}/../src/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>

在 pom 父亲中我已经定义了这样的模块。

   <modules>
<module>child1</module>
<module>child2</module>
</modules>

感谢您的建议!

最佳答案

您有多种选择来解决此问题:

  1. 在父 pom 部分配置插件,但默认插件配置跳过 docker 构建,并在子模块中覆盖该配置以不跳过
  2. 仅在子模块中配置,并将构建目标绑定(bind)到打包阶段。

我一直在子 pom.xml 中使用 [2] 和以下内容:

<build>
<plugins>
...
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<imageName>example</imageName>
<baseImage>example</baseImage>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>target</directory>
<include>example.war</include>
</resource>
</resources>
</configuration>
</plugin>
...
</plugins>
</build>

关于java - Maven:构建子项目的 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40949927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com