有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在我的mac osx上的intellij maven中禁止父定义中的java属性

我对MAC Intellij上的maven配置有一个问题。我得到一个错误,在子POM的父标记中,${a-web.version}“禁止父定义中的属性”。xml以及在父POM中定义的属性。xml。 但同样的配置在我的Windows Intellij上运行良好

下面是我的父母POM。xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>***</groupId>
   <artifactId>a-web</artifactId>
   <packaging>pom</packaging>
   <version>${a-web.version}</version>
   <name>a-web project</name>
   <url>http://***</url>

   <properties>
       <a-web.version>1.0.0</a-web.version>
   </properties>

   <modules>
       <module>a-core</module>
       <module>a-web</module>
   </modules>
</project>

这是我的孩子波姆。配置父块的xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>a-web</artifactId>
        <groupId>***</groupId>
        <version>${a-web.version}</version>
        <relativePath>../</relativePath>
    </parent>

    <artifactId>aweb-web</artifactId>
    <version>${a-web.version}</version>
    <packaging>war</packaging>
    <name>aweb-web</name>
</project>

我从stackoverflow尝试了很多方法,但没有人能解决它。我想知道为什么这个Maven配置在Mac和windows中有不同的行为,以及如何修复它


共 (3) 个答案

  1. # 1 楼答案

    因为您的maven版本低于3.5.2,所以请尝试使用>=3.5.2,当ide intellij idea捆绑maven版本低于3.5.2时,尝试下载zip集以使用您自己的maven,而不是捆绑的maven

    顺便说一句,虽然maven低于3.5.2显示intellij idea中存在错误,但它工作正常,可以“mvn包”成功

  2. # 2 楼答案

    这是IntelliJ的想法缺陷

    至少在IntelliJ IDEA 2019.2(终极版)中 建造#IU-192.5728.98,建造于2019年7月23日

  3. # 3 楼答案

    当项目开始在我刚刚拉出来的提交中使用父版本属性时,我遇到了非常类似的情况。该项目不会建造,而且感觉“进口不好”。在IDEA没有提供任何细节的情况下,试图展示有效的pom失败了

    正如@khmarbaise在评论[1]中指出的,在maven <parent>声明中对属性的使用有一些限制——最值得注意的是需要maven 3.5+。这个想法可能没有使用足够新的maven(我安装的最新想法中捆绑的那一个太旧了),所以我不得不使用设置>;构建、执行、部署>;构建工具>;Maven>;Maven主目录。一旦指向较新的版本,它就不会立即开始工作——一些重新启动/重建/重新导入例程导致新设置生效,项目成功导入并再次生成

    尽管在pom中强制执行了maven版本要求,但这并没有导致IDEA抱怨它使用的maven版本太旧。IDEA缺乏任何细节,无法用它使用的maven检查项目,这也没有帮助。现在,当一切正常时,它仍然在pom文件中表示“禁止父定义中的属性”

    [1]https://maven.apache.org/maven-ci-friendly.html