gpt4 book ai didi

java - 冲突的依赖项 : how to choose?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:26 24 4
gpt4 key购买 nike

让我们以项目 A 及其依赖项(包括传递依赖项)为例。如果查看依赖关系树,我会看到在一条路径的末尾有 slf4j-api:1.6.4,在另一条路径的末尾有 slf4j:1.6.1。

我必须选择哪个依赖项?如果我选择 slf4j:1.6.4,我的类路径中没有版本 1.6.1,我怎么知道版本 1.6.4 是否与使用版本 1.6.1 的代码兼容?

我不明白,因为最后我的类路径上只有一个 slf4j 版本。

谢谢

最佳答案

Maven 旨在管理这些类型的传递依赖性,并确保类路径中只存在一个版本的 jar。

如何查看Maven正在做什么

dependency插件将演示 Maven 正在代表您做什么(通过各种 POM 搜索并确定还有谁声明了对相同模块的依赖性)。

[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] | \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] | \- commons-digester:commons-digester:jar:1.6:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO] \- commons-collections:commons-collections:jar:2.0:compile

通常选择最新版本的模块,这是有道理的,因为某些模块可能使用仅在最新版本的日志库中可用的方法,例如。在实践中,通常是删除不推荐使用的方法导致编译问题,当相关代码没有保持锁定步骤时...

如何告诉Maven做什么

如果您想更好地控制所选版本,则需要指定依赖版本范围,如下所示:

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>[3.8,4.0)</version>
<scope>test</scope>
</dependency>

此处描述了功能:

希望这对您有所帮助。

关于java - 冲突的依赖项 : how to choose?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8913065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com