gpt4 book ai didi

maven - Maven中范围为“optional”的“provided”依赖项

转载 作者:行者123 更新时间:2023-12-03 09:10:27 26 4
gpt4 key购买 nike

有时候Maven有点烦我...我创建了一个库,该库对slf4j和log4j具有可选的依赖关系。我的意思是:

  • 我的库在编译时需要那些日志记录框架
  • 我的库在运行时不需要它们,但是如果“发现”它们,它将使用它们

  • 目前,我已将该依赖项标记为“可选”和“提供”:

    <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
    <type>jar</type>
    <scope>provided</scope>
    <optional>true</optional>
    </dependency>

    但是我的一些用户报告了问题,因为他们不需要log4 / slf4j。我的依赖性正确吗?不幸的是,我发现官方文档过于抽象,无法理解此问题。

    最佳答案

    您是否检查了this文档。它很好地描述了您的用例。将依赖项标记为可选将不会在使用您的库的应用程序中将它们解析为可传递的依赖项(即使作用域是compile)。

    与用于由运行时环境提供的必需依赖项的<scope>provided</scope>不同的是,不一定需要<optional>true</optional>依赖项(其思想是某些依赖项仅用于项目中的某些功能,而不会如果不使用该功能,则为必填项。)

    如果使用您的库的项目将使用可选依赖项提供的任何功能,则该项目必须自行声明这些依赖项。

    由于您的配置对我来说似乎是正确的,所以我不知道出现问题的原因。也许您期望的依赖项会由您期望的版本中的其他库解决。那当然会引起问题。

    关于maven - Maven中范围为“optional”的“provided”依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860426/

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