maven - Maven:为什么子项目在自己的目录中寻找父的仓库
问题描述
我在目录中有一个 Maven 子项目child
。我local-lib
在目录中还有一个父项目,child/local-lib
其中包含一个带有 jar 的存储库。这就是完整的目录结构:
child/ # child project
local-lib # parent project
repo # local repo
pom.xml # configuration of the parent project
pom.xml # configuration of the child project
本地存储库声明child/local-lib/pom.xml
为
<repositories>
<repository>
<id>repo</id>
<url>file:///${project.basedir}/repo</url>
</repository>
</repositories>
子项目在child/pom.xml
哪里引用其父项目,如下所示:
<parent>
<groupId>someGroup</groupId>
<artifactId>local-lib</artifactId>
<version>0.0.1</version>
<relativePath>./local-lib</relativePath>
</parent>
当我键入mvn clean install
子项目时,即在目录child
中,子项目尝试搜索不存在的存储库child/repo
,而不是child/local-lib/repo
. 但是,用我磁盘上的完整路径替换${project.basedir}
in会使子项目使用正确的存储库。这反过来,像以前一样放置,但有额外的:child/local-lib/pom.xml
child/local-lib
child/local-lib/repo
child/local-lib/pom.xml
local-lib
<repositories>
<repository>
<id>repo</id>
<url>file:///${project.basedir}/local-lib/repo</url>
</repository>
</repositories>
如果我使用目录中的 maven,这次可以正常工作child
,但如果我直接使用child/local-lib/pom.xml
from则不能child/local-lib
。后者创建local-lib
包含两次的路径。
为什么在存储库定义的情况下,${project.basedir}
有时指向子目录pom.xml
,而不是它自己的目录pom.xml
?是否有无条件指向pom.xml
自己的目录的属性?如果不是,那背后的动机是什么?
解决方案
推荐阅读
- excel - 如何在多个子文件夹中搜索文件?
- flutter - 将数据传递给小部件构造函数是 null
- ios - 如何通过单击同一 UITableViewCell 上的另一个 UIButton 来禁用 UIButton
- excel - Excel - 我想查找 1 个介于数字范围之间且等于一个值的表
- c# - LINQ 排序方式 - Parallel.Foreach
- excel - 删除区分大小写的重复项 + 附加列
- android - React Native - 如何让 productFlavors 具有不同的 applicationIds?
- android - Android Toggle Switch 通过数据打开或关闭
- reactjs - 在本机反应中编写警报组件
- kubernetes - 如何为没有端口的容器创建 Kubernetes 服务