maven - 如何强制分类器依赖传递依赖?

标签 maven gradle dependencies maven-3

我有依赖项:

  • A
  • B(这也取决于 A)。

现在,我想在 A 上使用说明符,假设:A-foo。但是,B 仍然依赖于 A,因此,我同时获得了 A-fooA目标 Artifact 。

有没有办法强制分类器依赖某些依赖项?

为什么?

我需要这个的原因如下。

我的 A 是一个基于 Java8 构建的 Java 库,但打包为 Multi-Release Jar这意味着当 jar 在 Java9 上运行时它包含额外的类。

不幸的是,一些旧的工具和服务器无法识别 MR Jars,这使得它们无法正常工作。

出于这个原因,我有我的库的 A-foo 版本,没有任何额外的类,所以旧服务器可以运行它。

但是,如果用户正在使用依赖于我的 A 的库 B,他将简单地获取 A 的 MRJar 版本,并且它将再次失败。我希望能够以某种方式阻止这种情况。

最佳答案

带有分类器的 Artifact 是不同的 Artifact ,而不仅仅是同一 Artifact 的不同版本。它不能取代 - 无论是技术上还是逻辑上 - 原始 Artifact ,意思是:即使你能在技术上找到绕过它的方法,它也违背了 Maven 逻辑。

如果您更详细地描述您想要解决的问题,人们可能会找到一种“Maven 方式”来完成它。

关于maven - 如何强制分类器依赖传递依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590399/

相关文章:

maven - 仅在Maven中创建具有依赖关系的可执行jar

git - Tomcat 应用程序无法启动

eclipse - Maven 没有将 jar 添加到类路径

android - 没有org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.71的缓存版本

maven - 如何在 Build.scala 中包含带有分类器的依赖项

java - 如何取消拆分包/合并模块

java - 如何为字节码检测设置 Intellij/jar list ?

android - eclipse + eclim + android支持库

architecture - 思维导图依赖的软件

linux - 如果 apt-get --fix-broken 给我一个 "not known"错误,我该如何修复损坏的依赖项?