2

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

0 に答える 0