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

标签 java maven intellij-idea parent-child nexus

我没有意识到这是可能的,但显然是因为我继承的这个项目做到了。该项目的 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的配置方式有关系,因为项目没有构建并提示缺少pom.xml,直到我使用了公司的settings.xml。但我不确定它在那个文件中的什么位置使它起作用。

谁能给我指点一些描述此功能如何工作的文档?我们正在使用 Nexus maven 存储库。

最佳答案

当Maven 寻找父POM 时,它首先在<relativePath/> 指定的位置查找。 (默认为 ../pom.xml);如果在那里找不到它,它会去查找您的本地存储库 ( ~/.m2 ),然后尝试从远程存储库下载它。

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

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

关于java - 在 Maven 中,如何引用文件系统上该位置不存在的父 pom?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28054211/

相关文章:

java - 将嵌套数组从 PHP 传递到 Java servlet

java - Selenium 选择By.Xpath 在一个div 之间

java - hibernate 教程。 Maven 编译时出现 MojoFailureException

java - Intellij Idea如何查看Glassfish日志

java - 如何停止在 IntelliJ 中运行的进程以调用关闭 Hook ?

java - 为什么 Spring 调度程序加载两次?

java - IntelliJ 更新 -> 通过 lambda 获取错误

python - 如何在浏览代码时返回 PyCharm,就像我们在 Eclipse 中有一个后退按钮一样?

java - 如何在另一个 Gui 中启动 JADE Gui?

xml - JSF 2.1 + Tomcat 8 - 部署错误