Maven Intellij无法使用$revision解析pom.xml。马文工厂

Maven Intellij无法使用$revision解析pom.xml。马文工厂,maven,intellij-idea,pom.xml,parent-pom,Maven,Intellij Idea,Pom.xml,Parent Pom,${revision}标记可以在pom.xml中使用,如下所述 具有此目录结构: fix ├── pom.xml ├── parent │   └── pom.xml └── example └── pom.xml pom.xml具有: <project> <groupId>intellij</groupId> <artifactId>fix</artifactId> <version>${

${revision}
标记可以在pom.xml中使用,如下所述

具有此目录结构:

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>
<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>

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] ------------------------------------------------------------------------
[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] ------------------------------------------------------------------------
这表明这里有问题…因为版本属性无法在根pom中解析…这就是IDEA IntelliJ告诉您有问题的原因…正如您在最后一行看到的根项目,这表明存在问题

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

[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] ------------------------------------------------------------------------
[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

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

这将产生我创建的github示例项目中给出的结构:


除此之外,请将文档中描述的
扁平化maven插件
添加到您的项目中,否则在使用
mvn clean install
mvn clean deploy

的情况下,您将失败。您应该将版本属性的属性定义从父级移动到项目的根级(修复工件)。此外,我强烈建议避免使用既是模块又是父级的父级…首先,感谢您花时间研究此问题。这解决了问题。您可能觉得这很明显,但我继承的项目有187个pom.xml文件,为了获得一个简单的示例,我有点费劲修复它。我将尝试改变结构,但这取决于它是否符合我的发展议程。我们已经启用了Flatte maven插件和许多其他插件…再次干杯并感谢!我知道现实生活是怎样的,因为我已经用更大的pom(800+模块等)完成了几个项目…所以毫不奇怪。哇,800+!这是一个更大的泥球