3 レベルのマルチモジュール プロジェクトで maven を実行しようとすると、問題が発生します。
最初のレベルは、antrun タスクを定義する super-pom です。これは外部リポジトリにあります。2 つ目はスーパーポンを参照し、サブモジュールの定義のみを含みます。/project にあるとしましょう。3 番目のレベルにはサブモジュールが含まれており、その項目は /project/moduleN にあります。
最初のレベルでは、AntRun タスクには「${project.basedir}」への呼び出しが含まれます。
Maven を使用するときは、第 2 レベルの pom フォルダーに移動し、mvn clean install を実行します。
サブモジュールのみが含まれているため、それらをコンパイルしようとしますが、${project.basedir} は既に /project/moduleN ではなく /project として評価されています。
それらを含むpomからではなく、サブモジュールからの値に置き換えるために、これらの式の評価を延期したいと思いますが、そうする方法が見つかりません。
何が起こっているのかを理解するために、POM ファイルからの抜粋を次に示します。
スーパーPOM
<groupId>org.example</groupId>
<artifactId>superpom</artifactId>
<packaging>pom</packaging>
...
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
...
<exec dir="${project.basedir}" ...></exec>
</plugin>
</plugins>
プロジェクトPOM
<parent>
<groupId>org.example</groupId>
<artifactId>superpom</artifactId>
</parent>
<groupId>org.example</groupId>
<artifactId>projectPom</artifactId>
<packaging>pom</packaging>
<modules>
<module>module1</module>
<module>module2</module>
</modules>
モジュールPOM
<parent>
<groupId>org.example</groupId>
<artifactId>projectPom</artifactId>
</parent>
<groupId>org.example</groupId>
<artifactId>moduleNPom</artifactId>
<packaging>jar</packaging>