use*_*188 17 project-structure pom.xml maven parent-pom
考虑一个maven项目,模块包含一些实用程序(jar)和一些poms供其他人参考,如果他们想要使用其中一些实用程序.
例如,在父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>
Run Code Online (Sandbox Code Playgroud)
因此,如果有另一个项目希望使用utils,它将引用ref-pom作为其父pom,以便可以继承属性.达到这个目的.
当前问题是当模块utils还需要引用ref-pom作为其父pom(并且ref-pom将ref.project-parent作为其父pom)时,maven抱怨'parent.relativePath'指向项目 - 父而不是ref-pom,建议再次验证项目结构.
因为这只是一个警告,我仍然可以编译项目,但我想知道设置项目结构的正确方法,以便maven很高兴并且我的目的得到满足.
bla*_*ild 34
为了解析父项目,请检查以下可能的来源:
如果没有明确给出,相对路径默认为..,即当前项目的父目录中的pom.因此,Maven检查a)该目录中是否有pom文件,以及b)pom文件是否包含与当前项目的父定义中所述相同的坐标.
如果a)和b)为真,则该pom文件用作解析有效pom的父级.
如果a)为真,并且b)为假,则给出警告,因为这通常指向错误配置的项目(如在您的情况下)并且忽略pom.
如果a)为假,则检查其他来源.
因此,在您的情况下,我假设您在utils/pom.xml中有以下内容
<parent>
<groupId>...</groupId>
<artifactId>ref-pom</artifactId>
<version>..</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
其中隐含着<relativePath>..</relativePath>.因此,Maven检查utils的父目录,找到一个POM,但这一点被命名project-parent而不是预期的ref-pom.因此警告.
以下将有效:
<parent>
<groupId>...</groupId>
<artifactId>ref-pom</artifactId>
<version>..</version>
<relativePath>../ref-pom</relativePath>
</parent>
Run Code Online (Sandbox Code Playgroud)
(请注意,在您的文本中,您写的是关于ref-pom,但在上面的模块中只有client-ref-pom和server-ref-pom)
然而
您应该考虑这是否真的是您想要的,在您的情况下,如果*-ref-pom确实需要单独的模块,或者这些poms的内容可以并且应该更好地放置在相应的*-util模块内.
| 归档时间: |
|
| 查看次数: |
42983 次 |
| 最近记录: |