gpt4 book ai didi

maven - 在 Maven 中限制对运行时范围的传递依赖

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

我有 2 个项目使用 Maven。第一个是包含实用程序类和方法的库。第二个项目是一个实际的应用程序,该应用程序具有该库作为依赖项。我的图书馆在内部使用第三方图书馆。

所以这些是依赖项:

  • 我的库:依赖第三方库
  • 我的应用程序:取决于我的图书馆

  • 但是,我不希望在 中提供第三方库类。编译时间 在我的应用程序中。这是因为该应用程序是由一个大团队支持的,我想防止人们在应用程序中意外使用第三方库中的方法,因为两者之间的某些类名和某些方法名相似。当然,第三方库必须在我的应用程序中可用,地址为 运行时间 .

    如果我所有依赖项的范围是 编译 ,它不会实现我的目标。有没有办法在 Maven 3 中实现这一点?

    最佳答案

    非常好的问题,不幸的是,由于其基本设计,您无法使用 Maven 3、2 或任何其他版本来执行此操作。您所问的实际上是一种理想和理想的行为,因为实际上任何 Artifact 的 compile依赖项应该是可传递的 runtime范围。但是,这样的设计会导致一些问题。您可以在 Maven's Introduction to the Dependency Mechanism 中阅读关于 compile范围:

    It is intended that [transitive dependencies of a compile dependency which are themselves compile dependencies should be considered] runtime scope instead, so that all compile dependencies must be explicitly listed - however, there is the case where the library you depend on extends a class from another library, forcing you to have available at compile time. For this reason, compile time dependencies remain as compile scope even when they are transitive.



    因此,如您所见,您实际上需要的是对这种行为进行适当的设计,但不幸的是,这是不可能实现的。

    关于maven - 在 Maven 中限制对运行时范围的传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11044243/

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