2

我在尝试在 3 级多模块项目中运行 maven 时遇到了一些问题。

第一层是super-pom,定义了antrun任务。它位于外部存储库中。第二个是指super-pom,只包含子模块的定义。假设它在 /project 第三层包含子模块,它的项目位于 /project/moduleN。

在第一层,AntRun 任务包括对“${project.basedir}”的调用。

当我使用 maven 时,我进入二级 pom 文件夹并运行 mvn clean install。

由于它只包含子模块,它会尝试编译它们,但 ${project.basedir} 已经被评估为 /project,而不是 /project/moduleN。

我想推迟对这些表达式的评估,以便用我的子模块中的值替换它们,而不是来自包括它们在内的 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