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 install
或 mvn clean deploy
的情况下您将失败
${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 install
或 mvn clean deploy