我在尝试在 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>