我有依赖关系:
A
B
(这也取决于A
)。现在,我想在A
上使用说明符,让我们说:A-foo
。但是,B
仍取决于A
,因此,我会在目标工件中包含A-foo
和A
。
有没有办法强制分类器对某些依赖?
我需要这个的原因如下。
我的A
是一个基于Java8构建的Java库,但打包为Multi-Release Jar,这意味着它包含了在Java9上运行jar时的其他类。
不幸的是,一些旧的工具和服务器不知道MR Jars,这使它们无法正常工作。
出于这个原因,我的库有A-foo
版本,没有任何额外的类,所以老服务器可以运行它。
但是,如果用户使用的库B
取决于我的A
,他只会获得A
的MRJar版本,并且会再次失败。我希望能够以某种方式阻止这种情况。
答案 0 :(得分:1)
具有分类器的工件是不同的工件,而不仅仅是同一工件的不同版本。它无法在技术上或逻辑上取代原始工件,这意味着:即使你在技术上找到解决方法,它也会违背Maven逻辑。
如果您更详细地描述要解决的问题,可以找到一个" Maven方式"这样做。
答案 1 :(得分:0)
在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'
}
这意味着: