当前位置: 首页 > 知识库问答 >
问题:

获取多个maven依赖树

井翰
2023-03-14

Maven将使用其最近的WINS策略自动解决依赖关系冲突,在这种情况下,它将在结果MVN dependency:Tree:

[INFO]-(commons-collections:commons-collections:jar:2.1:compile-因与2.0冲突而省略)

在本例中,如果选择commons-collections:2.1,我将有一个备用依赖关系树,可能包含多个其他依赖关系。

我目前正在做的工作是识别与其他依赖项有冲突的顶级依赖项,并为其运行依赖项树,即通过有效地创建多个新的POM来获得它们的树,这些POM具有单个依赖项。这是有效的,我可以为此写一个脚本,但这是一个手动过程。我正在寻找Maven目标或其他方法,这将行动在我的pom使事情简单明了。

我已经研究了Maven依赖插件的其他目标,如analyse,但它们在本例中似乎没有帮助。

共有1个答案

温成济
2023-03-14

没有一个插件可以做到这一点,但是有一个插件可以帮助处理最近的maven依赖解决策略,并防止它偶尔会产生意想不到的后果。

这是maven enforcer插件,它的DependencyConvertiming规则基本上关闭了maven最近赢策略。将该规则应用于构建时,如果对传递库的版本1有依赖关系,但对同一库的版本2也有依赖关系,则构建将失败。

这是一个失败早期机制,它允许检测maven最近依赖机制何时启动,并根据一些代码/库分析静默地选择我们更愿意自己做的库版本。

 类似资料:
  • 我正试图让maven下载所有的依赖项(编译、测试、插件等)。)这样我就可以避免让我们的dockerized构建浪费不必要的时间一遍又一遍地下载它们。 我们已经对maven build进行了dockerized,这样我们就可以从jenkins运行它,而无需在jenkins机器上安装大量构建特定的依赖项(Java、redis、maven依赖项等)。我们的构建依赖于增量docker构建,它只执行实际需要

  • 我想知道以下jar的所有传递依赖项: 将经典命令移动到pom。项目定义依赖关系和输入的xml: mvn依赖:树 将显示: 我没看到魔咒父母: 乍一看,mvn命令似乎可以显示非pom类型的依赖项。 有没有一种方法可以精确地显示使jar保持活动状态所需的每个文件? 谢谢

  • 主要内容:依赖声明,获取依赖坐标Maven 是一款优秀的依赖管理工具,那么什么是依赖呢? 通俗的说,如果一个 Maven 构建所产生的构件(例如 Jar 文件)被其他项目引用,那么该构件就是其他项目的依赖。 依赖声明 Maven 坐标是依赖的前提,所有 Maven 项目必须明确定义自己的坐标,只有这样,它们才可能成为其他项目的依赖。当一个项目的构件成为其他项目的依赖时,该项目的坐标才能体现出它的价值。 当 Maven 项目需要声

  • 问题内容: 如何以编程方式在Maven执行环境之外获取Maven模块的所有依赖关系? 到目前为止,我有: 通过maven-core: 并通过jcabi-aether: 到目前为止,这通常正确吗? 现在的问题是,我得到了NullPointerException: 因为mavenProject.getRemoteProjectRepositories()返回null。 如何在考虑settings.xm

  • 问题内容: 我刚刚遇到了一个案例,即我的Maven项目有两个直接依赖项,其中有两个不同版本的特定传递性依赖项。 在我的特殊情况下,我直接依赖以下内容: 和 这两个依赖项都对com.sun.jersey:jersey- core具有(较深)的传递性依赖关系,但是每个都有不同的版本。Maven并没有失败,甚至没有警告(或者,如果没有,我从来没有看到过!)正在发生这样的事情……因此,直到调试了球衣版本时

  • Maven插件(maven-compiler-plugin: 3.8.1和maven-surefire-plugin: 3.0.0-M3)在运行mvn清洁包时似乎正在下载同一依赖项(plexus-utils)的多个版本,即使我在依赖项中指定了plexus-utils的最新版本。这不会导致任何错误,但3.0.16之前的任何版本的plexus-utils都容易受到命令注入的影响。有没有办法阻止这种情况