已部署的 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 文件

已部署的页面加载但不显示--用gatsby构建。

错误的ERR!缺少脚本:在将react应用程序部署到heroku时构建

Hololens 2 和 Microsoft.MixedReality.QR 缺少方法异常

站点包中缺少 Django-allauth 模板

npm 错误!缺少脚本:将反应应用程序部署到heroku时构建