我的项目将其依赖项存储在Maven存储库中。我希望能够将某些依赖项移动到另一个Maven存储库。此举很容易。但是 要移动,这对我来说很难做到。
为了使构建工具(如Maven或Gradle)能够在构建中使用移动的依赖项,我还需要传输(1)传递依赖(递归)和(2)项目的父POM文件,执行( 1)再次在父节点上,直到依赖关系图中的所有节点都用完为止。
这似乎是一个非常常见的用例,我正在对它已被多次实施的事实进行对冲。
问题:是否有开箱即用的实用此功能的公共库?
如果没有,我可能必须实现自定义POM解析器。我的假设是否高于需要移动的内容?
答案 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中指定的传递依赖项和依赖项。