Maven:构build儿童项目的Docker镜像

我的项目有以下结构:

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

有一个pom父亲和两个孩子poms。 孩子的构build使用Spotify插件来生成项目的Docker镜像。 我的问题是,我怎样才能从根目录调用两个构build? 我基本上需要调用在子模块上构build的spotify插件。 我试图使用

 mvn clean install 

但是孩子是用maven-compiler-plugin构build的,而不是用docker-maven-plugin构build的。

这是我在孩子身上使用的版本:

 <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> 

在爸爸,我已经定义了这样的模块。

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

感谢您的build议!

你有几个选项来解决这个问题:

  1. 在父pom的部分中configuration插件,但默认插件configuration跳过docker构build,并覆盖子模块中的不跳过
  2. 只在子模块中configuration它,并将构build目标绑定到包阶段。

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

 <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> 

尝试添加以下内容到插件:

 <executions> <execution> <phase>install</phase> <goals> <goal>build</goal> </goals> </execution> </executions>