我正在尝试构建包含在构建父POM文件期间构建的一组.jar文件的docker镜像。到目前为止我发现的是特定模块的单个构建创建单独的docker镜像的情况。
我的泊坞窗图片包含已部署捆绑包的Karaf。在某些时候,我实现了创建docker,但是当一切都构建完成时。我担心docker-maven-plugin可能不支持我想从bundle的特定文件夹创建docker镜像的情况(每个子项目都将其bundle部署到特定文件夹)。
现在我发现父POM包类型只支持三个阶段,但无论如何 - 所有这些阶段都在构建期间作为第一个项目运行。所以问题是:
是否可以创建泊坞窗图像
在父母POM的某些部分下面,最终可能与我的需求无关
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<inherited>false</inherited>
<version>0.4.10</version>
<configuration>
<imageName>test1</imageName>
<dockerDirectory>../karaf-deploy</dockerDirectory>
<resources>
<resource>
<targetPath>../karaf-deploy/</targetPath>
<directory>../karaf-deploy/</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
答案 0 :(得分:1)
儿童 - 父母关系只是一种特殊的依赖形式,其中儿童依赖父母。因此,在任何孩子之前,父母总是先建立。这也意味着您无法在父级中构建依赖于子级的任何内容,因为父级依赖于子级将基本上是循环依赖。
因此,如果您只想捆绑一个工件,可以将docker插件添加到该单个项目的生命周期中。但是如果你想捆绑多个工件,你应该遵循@khmarbaise的建议:
pom
打包或使用特殊扩展名)prepare-package
阶段定义copy-dependencies
步骤以将依赖项复制到构建目录package
阶段定义docker-maven-plugin设置以捆绑复制的依赖项如果您的分发插件可以直接从Maven中选择依赖项,请跳过步骤4。我们使用io.fabric8 docker-maven-plugin来定义汇编样式描述符,例如:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>all-artifacts</id>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>
</dependencySets>
</assembly>