编程语言
首页 > 编程语言> > java-在maven中,如何引用文件系统上该位置不存在的父pom?

java-在maven中,如何引用文件系统上该位置不存在的父pom?

作者:互联网

我没有意识到这是可行的,但是显然是因为我继承的这个项目做到了.该项目的pom如下所示:

<parent>
    <groupId>my.group</groupId>
    <artifactId>artifact</artifactId>
    <relativePath>../parent/pom.xml</relativePath>
    <version>1.0.14</version>
</parent>

我的文件系统上不存在“ ../parent/pom.xml”,但该项目的构建没有问题.甚至Intellij也感到困惑,并将这个relativePath标记为红色.

我知道这与我的〜/ .m2 / settings.xml的配置方式有关,因为在我使用公司的settings.xml之前,该项目并未构建,并抱怨缺少pom.xml.但是我不确定该文件在哪个文件中起作用.

有人可以指出一些描述此功能工作原理的文档吗?我们正在使用Nexus Maven存储库.

解决方法:

当Maven寻找父POM时,它首先在< relativePath />指定的位置查找. (默认为../pom.xml);如果在该目录中找不到它,它将转到本地存储库(〜/ .m2)中,然后尝试从远程存储库下载它.

没有看到您的settings.xml,我无法确定,但是我最大的猜测是您那里列出了一个远程存储库,这使maven可以执行最后一步-从在中定义的远程存储库下载父POM. settings.xml.

参考:https://maven.apache.org/pom.html#Inheritance-“请注意relativePath元素.它不是必需的,但可以用作Maven的指示符,以便在搜索本地和远程存储库之前先搜索为此项目的父级提供的路径.”

标签:maven,intellij-idea,parent-child,nexus,java
来源: https://codeday.me/bug/20191120/2046933.html