Maven抱怨父母的相对路径

user1589188:

考虑一个带有模块的Maven项目,其中包含一些实用程序(jar)和一些pom,供其他人如果要使用其中的一些实用程序参考。

例如在父pom.xml内部

<artifactId>project-parent</artifactId>
<modules>
  <module>client-ref-pom</module> (a module with just one pom.xml)
  <module>server-ref-pom</module> (a module with just one pom.xml)
  <module>client-utils</module> (a module with some utility classes, needs to ref. client-ref-pom)
  <module>server-utils</module> (a module with some utility classes, needs to ref. server-ref-pom)
  <module>utils</module> (a module with some utility classes, needs to ref. project-parent)
</modules>

因此,如果有另一个项目希望使用utils,它将引用ref-pom作为其父pom,以便可以继承属性。达到这个目的。

当前问题是当模块utils还需要引用ref-pom作为其父pom(而ref-pom将ref.project-parent为其父pom)时,maven抱怨“ parent.relativePath”指向了project-父项而不是ref-pom,建议再次验证项目结构。

因为这只是警告,所以我仍然可以编译项目,但是我想知道设置项目结构的正确方法,以便Maven满意并达到我的目的。

blackbuild:

为了解析父项目,请检查以下可能的来源:

  • relativePath
  • 本地仓库
  • 远程仓库

相对路径(如果未明确给出)默认为..,即当前项目的父目录中的pom。因此,Maven会检查a)该目录中是否有pom文件,以及b)该pom文件是否包含与当前项目的父级定义中所述的坐标相同的坐标。

如果a)和b)为true,则将该pom文件用作解析有效pom的父文件。

如果a)是true,而b)是false,则会发出警告,因为这通常指向配置错误的项目(如您的情况),并且pom被忽略。

如果a)为假,则检查其他来源。

因此,就您而言,我假设您在utils / pom.xml中包含以下内容

<parent>
  <groupId>...</groupId>
  <artifactId>ref-pom</artifactId>
  <version>..</version>
</parent>

其中暗含<relativePath>..</relativePath>因此,Maven检查utils的父目录,找到一个POM,但这是命名的,project-parent而不是期望的ref-pom因此警告。

以下将起作用:

<parent>
  <groupId>...</groupId>
  <artifactId>ref-pom</artifactId>
  <version>..</version>
  <relativePath>../ref-pom</relativePath>
</parent>

(请注意,在您的文本中,您撰写了有关ref-pom的内容,但在上面的模块中只有client-ref-pomand server-ref-pom

然而

在您的情况下,您应该考虑这是否是您真正想要的,如果*-ref-pom确实需要单独的模块,或者这些pom的内容可以并且应该更好地放在相应*-util模块的内部

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章