【发布时间】:2015-11-12 11:02:45
【问题描述】:
我有一个多模块 Maven 项目,其中一些模块必须构建为 Docker 映像。我尝试将所有配置放在父 POM 中,如下所示:
父 POM:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.3.5</version>
<configuration>
<baseImage>java</baseImage>
<imageName>${project.artifactId}</imageName>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}/${project.build.finalName}-executable</directory>
<include>${project.build.finalName}.jar</include>
<include>lib/*.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
子 POM:
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
但是当我在子项目上运行 mvn docker:build 时出现错误,因为 project.build.directory 属性被解析为父 POM 的目标目录,而不是子项目的目标目录。
是否可以延迟扩展父 POM 中的属性?或者从父 POM 中引用子的 project.* 属性?
【问题讨论】:
-
不可能,如果您在 child , ${project.build.directory} = child/target 中执行 mvn docker:build,因为您的插件在 pluginManagement 中。显示日志?