我有一个父项目 XX-parent, 子项目 xx-commonlib 要用流水线发布到公司的 gitlab 私服,script 命令
mvn deploy -s ci_settings.xml
父项目的 pom 中添加了仓库和部署仓库的地址
<repositories>
<repository>
<id>gitlab-maven</id>
<url>https://sample-gitlab/api/v4/projects/20/packages/maven</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>gitlab-maven</id>
<url>https://sample-gitlab/api/v4/projects/20/packages/maven</url>
</repository>
<snapshotRepository>
<id>gitlab-maven</id>
<url>https://sample-gitlab/api/v4/projects/20/packages/maven</url>
</snapshotRepository>
</distributionManagement>
子项目 xx-commonlib 的 pom 中继承父项目,没有添加相关仓库的配置
<parent> <groupId>xx.xx.xx</groupId> <artifactId>xx-parent</artifactId> <version>1.0.0-SNAPSHOT</version> <relativePath/> </parent>
向 gitlab 推送代码,CI/CD 自动发布后,父项目 xx-parent 可以正常发布到 gitlab 的 maven 私服仓库上,子项目 xx-commonlib 报错
Non-resolvable parent POM for xx.xx.xx:xx-commonlib:1.0.0-SNAPSHOT: Could not find artifact xx.xx.xx:xx-parent:pom:1.0.0-SNAPSHOT and 'parent.relativePath' points at no local POM @ line 6, column 13
必须在子项目 xx-commonlib 的 pom 中添加
<repositories> <repository> <id>gitlab-maven</id> <url>https://sample-gitlab/api/v4/projects/20/packages/maven</url> </repository> </repositories>
后子项目才可以正常发布到仓库。
我的疑问是为什么子项目没有继承父项目的<repositories>仓库配置,但是可以继承<distributionManagement>部署仓库配置。 因为这个父项目下面有不少子项目,如果每个子项目的 pom 文件里都要写一遍 repositories 地址的话可能比较麻烦。
stackflow 上有个类似的问题,好像没有正确的答案 https://stackoverflow.com/questions/69570730/maven-child-modules-not-inheriting-repository-tags
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.