8
我有一个多模块Maven项目,其中一些模块必须作为Docker镜像构建。我试图把所有的配置在父POM像这样:Maven:如何在父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.*
属性?
不可能,如果你做mvn docker:build in child,$ {project.build.directory} = child/target,因为你的插件在pluginManagement中。显示日志 ? –