已部署的 Github 包中缺少父 POM
Posted
技术标签:
【中文标题】已部署的 Github 包中缺少父 POM【英文标题】:Parent POM Missing on deployed Github package 【发布时间】:2020-10-20 23:09:10 【问题描述】:使用 Github 包中的操作,成功部署了一个 jar。 jar 和 pom 是可见的。
第二个项目使用该 jar 作为依赖项,但是 maven 尝试下载父 pom 而不是 jar;导致一个
无法解决依赖关系错误
如何告诉 maven 只下载 jar?
pom 确实有父级:
<parent>
<artifactId>app-parent</artifactId>
<groupId>com.test.app</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>app-test</artifactId>
其他应用使用依赖项:
<dependency>
<groupId>com.test.app</groupId>
<artifactId>app-test</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
settings.xml 包含指向存储库的 github 包设置的所有正确信息。
谢谢
【问题讨论】:
【参考方案1】:如果您使用 jar 作为依赖项,Maven 还需要解析 POM 和父 POM(以及更多)以确定传递依赖项。
例如:app-test
的父 POM 定义了一个依赖项。那么这也是app-test
的一个依赖,需要进行传递依赖解析。
总结:你也需要父 POM。
我的问题是:如果缺少父 POM,如何首先构建?
【讨论】:
这个问题来自于将项目从手动部署迁移到使用 CI。有问题的 jar 依赖项是在完整检出项目后在本地部署框上构建的。现在有了 CI,想法是构建组件并在触发其他构建(需要它们)时使它们可用。 经验法则是:如果你需要一些东西来构建 jar,你还需要它来使用它作为依赖。 Maven 无法正确使用没有其依赖项、其 BOM 或其父 POM 的依赖项。 我唯一想到的(可能不会)对你有帮助的是 flatten maven 插件。它允许您在构建过程中“展平” POM,这意味着合并了父 POM 的内容并消除了对父 POM 的引用。以上是关于已部署的 Github 包中缺少父 POM的主要内容,如果未能解决你的问题,请参考以下文章
PyPI 安装和压缩包中缺少我的包的 requirements.txt 文件
错误的ERR!缺少脚本:在将react应用程序部署到heroku时构建