我正在尝试构建包含在构建父POM文件期间生成的一组.jar文件的docker映像。到目前为止,我发现的情况是,特定模块的单个构建会创建单独的坞映像。
我的对接映像包含Karaf和已部署的包。在某种程度上,我实现了创建码头,但当一切都建立。我担心docker plugin可能不支持这样的情况,即我希望从特定的包文件夹(每个子项目都将其捆绑包部署到特定文件夹)创建对接器映像。
目前,我发现父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>发布于 2016-06-08 11:15:21
子女与父母的关系只是一种特殊的依赖形式,孩子依赖于父母.因此,父母总是先建立在任何孩子之前。这也意味着您不能在父级中构建依赖于子级的任何内容,因为依赖于子级的父级基本上是一个循环依赖项。
因此,如果您只想捆绑一个工件,就可以将docker插件添加到该项目的生命周期中。但是,如果您想捆绑多个工件,您应该遵循@khmarbaise的建议:
pom打包或者使用特殊的扩展)copy-dependencies阶段定义prepare-package步骤以复制依赖项以生成目录package阶段定义docker-maven-plugin设置,以捆绑复制的依赖项。如果您的发行插件可以直接从Maven中选择依赖项,请跳过步骤4。我们使用的是io.fabric8坞-maven-插件,您可以在这里定义程序集样式描述符,如下所示:
<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>https://stackoverflow.com/questions/37700135
复制相似问题