gradle 中实现依赖项的 maven 等价物是什么?



我最近了解到 gradle 有api/implementation的依赖项"范围",我试图弄清楚是否有一个 maven 等价物与 gradle 中的implementation。没有一个 maven 依赖项范围似乎完全适合此 -provided使它不是运行时依赖项,compile/runtime似乎没有做正确的事情,...因此,似乎没有直接的等价物。

基本上,我的库有一个依赖项,在编译时(对于我的库(/运行时(对于使用我的库的代码(是必需的,但我不想在依赖于我的库的代码的编译类路径中。这可能与maven有关吗?

  • 当在库中声明时,这种依赖关系应该具有 scope=compile。这样,它将在编译库期间可用。
  • 但是当在依赖于您的库的其他模块的依赖项管理部分中声明时,它应该具有 scope=运行时。这样,在编译其他模块时,它就不会出现在类路径中。

AFAIK 这是不可能的。

如果要避免在代码中无意中使用传递依赖项,可以使用dependency:analysedependency:analyze-only

后者允许您直接使用传递依赖项中的类,则构建失败。

您能否更具体地给出架构(模块、子模块(的示例?

如果我有以下模块:

  • A:有依赖关系到依赖关系x范围编译
  • B:对依赖关系 A 范围编译

现在我希望 x 在类路径中并在 A 构建期间编译,但我不希望 x 在 B 类路径中

好吧,你会在 B 中得到 x,因为它是一个传递依赖项,但你可以很容易地排除它(当你将依赖项 A 声明到 B 时(,所以它不会在类路径中。

<dependencies>
<dependency>
<groupId>test.test</groupId>
<artifactId>B</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>test.test</groupId>
<artifactId>x</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

更多信息: https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

最新更新