Maven 如何在可传递依赖项上强制使用分类器?
我有依赖关系:Maven 如何在可传递依赖项上强制使用分类器?,maven,gradle,dependencies,maven-3,Maven,Gradle,Dependencies,Maven 3,我有依赖关系: A B(这也取决于A) 现在,我想在A上使用说明符,比如:A-foo。然而,B仍然依赖于A,因此,我将A-foo和A都包含在目标工件中 有没有办法强制分类器依赖于某些依赖项 为什么? 我需要它的原因如下 MyA是一个基于Java8构建的Java库,但打包为,这意味着当jar在Java9上运行时,它包含额外的类 不幸的是,一些旧的工具和服务器不知道MR Jars,这使得它们无法工作 由于这个原因,我的库有A-foo版本,没有任何额外的类,所以旧服务器可以运行它 但是,如果用户正
A
(这也取决于B
)A
A
上使用说明符,比如:A-foo
。然而,B
仍然依赖于A
,因此,我将A-foo
和A
都包含在目标工件中
有没有办法强制分类器依赖于某些依赖项
为什么?
我需要它的原因如下
MyA
是一个基于Java8构建的Java库,但打包为,这意味着当jar在Java9上运行时,它包含额外的类
不幸的是,一些旧的工具和服务器不知道MR Jars,这使得它们无法工作
由于这个原因,我的库有A-foo
版本,没有任何额外的类,所以旧服务器可以运行它
但是,如果用户正在使用依赖于我的
A
的库B
,他只需获得A
的MRJar版本,它就会再次失败。我希望能够以某种方式防止这种情况。带有分类器的工件是不同的工件,而不仅仅是同一工件的不同版本。它不能取代——无论在技术上还是逻辑上——原始工件,这意味着:即使你能在技术上找到绕过它的方法,它也违背了Maven逻辑
如果您更详细地描述要解决的问题,您可能会找到一种“Maven方法”来解决它。在Gradle中,这可以通过以下代码实现:
compile ('org.jodd:jodd-core:4.1.4:jre9') {
force = true
}
compile ('org.jodd:jodd-joy:4.1.4') {
exclude group: 'org.jodd', module:'jodd-core'
}
这意味着:
- 强制使用图书馆李>
- 排除库的可传递非分类器依赖项