Intellij не может разобрать pom. xml с $ revision. Maven работает - PullRequest
1 голос
/ 28 января 2020
Тег

${revision} может использоваться в пом. xml как описано здесь .

Имея такую ​​структуру каталогов:

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

пом . 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>

родитель / пом. 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>

И пример / пом. 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 сообщает:

enter image description here

Принимая во внимание, что mvn на терминале хорошо его анализирует и работает.

Это мешает многим вещам в IntelliJ.
Я пробовал это с IntelliJ 2019.2

1 Ответ

2 голосов
/ 28 января 2020

Просто подсказка. Если вы просто наберете команду mvn clean со структурой, вы увидите следующее:

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

, и это показывает, что здесь что-то не так ... потому что свойство версии не может быть разрешено в root pom .... и это причина, по которой IDEA IntelliJ сообщает вам, что что-то не так .... как вы видите, проект root в последней строке указывает на наличие проблемы.

Если вы правильно переместите свойство ревизии в проект root (исправление), то вы увидите это:

[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 в первой строке, что правильно.

Я настоятельно рекомендую изменить вашу структуру правильно и не использовать <relativePath>../parent/pom.xml</relativePath> в вашем проекте example, который является индикатором того, что ваша структура каталогов не представляет вашу реальную структуру, созданную вами в ваших pom-файлах.

Это должно привести к структуре, как показано в примере проекта на github, который я создал:

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

Помимо этого, пожалуйста, объявление d flatten-maven-plugin, как описано в документации к вашему проекту, иначе вы потерпите неудачу в случаях, когда вы используете mvn clean install или mvn clean deploy

...