Intellij 无法用 $revision 解析 pom.xml。 Maven 工程

Intellij can not parse pom.xml with $revision. Maven works

${revision} 标签可以在 pom.xml 中使用,如 here 所述。

具有以下目录结构:

fix
├── pom.xml
├── parent
│   └── pom.xml
└── example
    └── pom.xml

pom.xml 有:

<project>
    <groupId>intellij</groupId>
    <artifactId>fix</artifactId>
    <version>${revision}</version>

    <properties>
        <project.parent.basedir>parent</project.parent.basedir>
    </properties>

    <packaging>pom</packaging>
    <modules>
        <module>parent</module>
        <module>example</module>
    </modules>
    <modelVersion>4.0.0</modelVersion>
</project>

parent/pom.xml 有:

<project>
    <groupId>intellij</groupId>
    <artifactId>parent</artifactId>

    <properties>
        <revision>1.0.0</revision>
    </properties>

    <parent>
        <groupId>intellij</groupId>
        <artifactId>fix</artifactId>
        <version>${revision}</version>
    </parent>

    <packaging>pom</packaging>
    <modelVersion>4.0.0</modelVersion>
</project>

example/pom.xml:

<project>
    <groupId>example</groupId>
    <artifactId>example</artifactId>

    <parent>
        <groupId>intellij</groupId>
        <artifactId>parent</artifactId>
        <version>${revision}</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
</project>

IntelliJ 报告:

而终端上的 mvn 可以很好地解析它并且可以正常工作。

这破坏了 IntelliJ 中的很多东西。
我用 IntelliJ 2019.2

试过了

只是一个提示。如果您使用结构执行简单的 mvn clean on 命令,您将看到:

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] parent 1.0.0 ....................................... SUCCESS [  0.146 s]
[INFO] example 1.0.0 ...................................... SUCCESS [  0.003 s]
[INFO] fix ${revision} .................................... SUCCESS [  0.002 s]
[INFO] ------------------------------------------------------------------------

这表明这里有问题...因为版本 属性 无法在根 pom 中解析...这就是 IDEA IntelliJ 告诉您有问题的原因错误....正如您在最后一行中看到的根项目指示器存在问题一样。

如果您将修订 属性 正确地移动到根项目(修复)中,您将看到:

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ example ---
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for fix 1.0.0:
[INFO] 
[INFO] fix ................................................ SUCCESS [  0.106 s]
[INFO] parent ............................................. SUCCESS [  0.003 s]
[INFO] example ............................................ SUCCESS [  0.002 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.255 s
[INFO] Finished at: 2020-01-28T20:56:22+01:00
[INFO] ------------------------------------------------------------------------

在此输出中,第一行的 fix 是正确的。

我强烈建议正确更改您的结构并且不要在您的 example 项目中使用 <relativePath>../parent/pom.xml</relativePath> 这表明您的目录结构并不代表您在 pom 中创建的真实结构文件。

这将导致我在 github 上创建的示例项目中给出的结构:

https://github.com/khmarbaise/so-question-1

除此之外,请按照文档中的说明将 flatten-maven-plugin 添加到您的项目中,否则在使用 mvn clean installmvn clean deploy

的情况下您将失败