延迟Maven子模块中的属性评估

时间:2013-04-10 17:42:08

标签: maven maven-3

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

第一级是超级pom,它定义了解决任务。它位于外部存储库中。 第二个是指超级pom,只包括子模块的定义。假设它在/ project中 第三级包含子模块,其项目位于/ project / moduleN。

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

当我使用maven时,我会转到第二级pom文件夹并运行mvn clean install。

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

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

0 个答案:

没有答案