【问题标题】:Transfer a Maven dependency + all transitive + parent POM转移一个Maven依赖+所有传递+父POM
【发布时间】:2017-01-17 22:36:06
【问题描述】:

我的项目将其依赖项存储在 Maven 存储库中。我希望能够将某些依赖项移动到另一个 Maven 存储库。移动是容易的部分。但对于我来说,要移动的是 什么

为了让 Maven 或 Gradle 等构建工具能够在构建中使用移动的依赖项,我还需要传输 (1) 传递依赖项(递归)和 (2) 项目的父 POM 文件,执行 ( 1) 再次在父节点上,直到依赖图中的所有节点都用完。

这似乎是一个非常常见的用例,我正在对冲它已经多次实施的事实。

问题:是否有开箱即用实现此功能的通用库?

如果没有,我可能不得不实现一个自定义 POM 解析器。我以上关于需要移动的假设是否正确?

【问题讨论】:

    标签: java maven gradle repository dependency-management


    【解决方案1】:

    maven-dependency-plugincopy-dependencies 目标可以帮助您完成这项任务:

    将项目依赖项从存储库复制到定义位置的目标。

    它还提供了一个选项 addParentPoms 来复制构建所需的父 pom(因此,整个层次结构)。但默认情况下不启用此选项。

    此外,通过不同的include/exclude 选项(按组 ID、按工件 ID 等),您可以过滤您实际需要移动的内容。

    通过其excludeTransitive 选项,您还可以检查是否需要传递依赖:默认设置为false,因此传递依赖也会被复制。

    通过其outputDirectory 选项,您可以根据任何指定的过滤器指定复制依赖项、传递依赖项和 pom 文件层次结构的位置。


    您可能还对purge-local-repository 目标与maven-dependency-plugin 的组合感兴趣,从本地存储库中删除项目所需的任何内容(包括传递依赖项、pom 层次结构、插件依赖项)和@987654326 @target 为离线模式准备项目,即解决(下载)所需的任何内容。同样,这两个目标都提供包含/排除机制和传递依赖关系管理,以便您可以改进策略和结果。

    【讨论】:

      【解决方案2】:

      mvn dependency:list 将为您提供项目所有依赖项的列表,包括传递依赖项和父 pom 中指定的依赖项。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-16
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 1970-01-01
        • 2012-12-27
        • 1970-01-01
        相关资源
        最近更新 更多