【问题标题】:Parent POM Missing on deployed Github package已部署的 Github 包中缺少父 POM
【发布时间】: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 包设置的所有正确信息。

谢谢

【问题讨论】:

    标签: maven github github-actions


    【解决方案1】:

    如果您使用 jar 作为依赖项,Maven 还需要解析 POM 和父 POM(以及更多)以确定传递依赖项。

    例如:app-test 的父 POM 定义了一个依赖项。那么这也是app-test的一个依赖,需要进行传递依赖解析。

    总结:你也需要父 POM。

    我的问题是:如果缺少父 POM,如何首先构建?

    【讨论】:

    • 这个问题来自于将项目从手动部署迁移到使用 CI。有问题的 jar 依赖项是在完整检出项目后在本地部署框上构建的。现在有了 CI,想法是构建组件并在触发其他构建(需要它们)时使它们可用。
    • 经验法则是:如果你需要一些东西来构建 jar,你还需要它来使用它作为依赖。 Maven 无法正确使用没有其依赖项、其 BOM 或其父 POM 的依赖项。
    • 我唯一想到的(可能不会)对你有帮助的是 flatten maven 插件。它允许您在构建过程中“展平” POM,这意味着合并了父 POM 的内容并消除了对父 POM 的引用。
    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 2015-08-01
    • 2014-07-03
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多