传输Maven依赖关系+所有传递+父POM

时间:2016-09-09 18:00:20

标签: java maven gradle repository dependency-management

我的项目将其依赖项存储在Maven存储库中。我希望能够将某些依赖项移动到另一个Maven存储库。此举很容易。但是 要移动,这对我来说很难做到。

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

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

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

如果没有,我可能必须实现自定义POM解析器。我的假设是否高于需要移动的内容?

2 个答案:

答案 0 :(得分:2)

maven-dependency-plugin的{​​{3}}目标可以帮助您完成此任务:

  

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

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

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

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

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

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

答案 1 :(得分:1)

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