2015-11-12 50 views
8

私はいくつかのモジュールがDockerイメージとして構築されなければならないマルチモジュールMavenプロジェクトを持っています。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:私はそうのような親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から子のプロパティを参照することはできますか?

+1

mvn dockerを実行している場合、プラグインがpluginManagementにあるため、$ {project.build.directory} = child/targetという子プロセスでビルドすることはできません。ログを表示しますか? –

答えて

0

問題は、バージョンのプロパティも使用していたことです(このように:Maven version with a property)。それは、アグリゲーターPOMからMavenを実行する場合にのみ機能します。 明示的なバージョンへの切り替え(およびそれらを更新するためのmaven-release-pluginの使用)は、この問題を解決しました。

関連する問題