gpt4 book ai didi

java - maven:如何禁用某些依赖项?

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:19 24 4
gpt4 key购买 nike

好吧,我不是在谈论众所周知的公共(public)日志记录问题,我知道我可以通过设置 99.0-does-not-exist 版本来禁用它。

我的问题是,某些包包含在不同的依赖项中,例如,aspectjlib 既包含在 org.aspectj:aspectjlib 又包含在aspectj:aspectjlib 中。在某些情况下,传递依赖可能会同时引入两个不同版本的 jar,例如 org.aspectj:aspectjlib:1.7.3、aspectj:aspectjlib:1.6.1。并且意外地错误加载aspectj:aspectjlib:1.6.1并不是我的意图。那么有没有一种像commons-logging这样的方法可以完全禁用aspectj:aspectjlib?

我使用 99.0-does-not-exist 尝试了同样的技巧,却发现来自 Maven 的错误:

<小时/>

[ERROR] Failed to execute goal on project XXX: Could not resolve dependencies for project XXX:jar:1.0.0-SNAPSHOT: The following artifacts could not be resolved: aspectj:aspectjlib:jar:99.0-does-not-exist, aspectj:aspectjrt:jar:99.0-does-not-exist, aspectj:aspectjweaver:jar:99.0-does-not-exist: Could not find artifact aspectj:aspectjlib:jar:99.0-does-not-exist in tbmirror (http://mvnrepo.taobao.ali.com/mvn/repository) -> [Help 1]

最佳答案

虽然有些存储库确实提供了 99.0-does-not-exist 来记录系统依赖项,例如 log4j、slf4j-log4j、commons-logging 等,但这并不是一个通用的解决方案。

我找到了一个解决方案:使用“提供的”范围。为了澄清,在上面的示例中,我有两个相互冲突的依赖项:org.aspectj:aspectjlib:1.7.3,aspectj:aspectjlib:1.6.1,我想禁用aspectj:aspectjlib:1.6.1,我只需要把它放在顶级pom中:

<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectjlib</artifactId>
<version>1.6.1</version>
<scope>provided</scope>
</dependency>

这样,aspectj:aspectjlib:1.6.1将永远不会出现在最终构建的lib中。

关于java - maven:如何禁用某些依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22342279/

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