Karaf OSGI如何解决Google Guava的两个依赖链冲突

问题描述 投票:0回答:1

2.8及其cxf功能3.3.5以及作为功能安装的cxf-jaxrs都依赖于Google Guava 20.0。我有自己的项目,在其中我通过Karaf功能安装了两个jar,其中包括一个Google Guava 18.0。我现在要安装的捆绑软件具有适用于18.0的Google Guava依赖项,但是出现以下错误:


Chain 1:
  arcanite-core [arcanite-core [269](R 269.0)]
    import: (&(osgi.wiring.package=com.google.common.collect)(version>=18.0.0)(!(version>=19.0.0)))
     |
    export: osgi.wiring.package: com.google.common.collect
  com.google.guava [com.google.guava [253](R 253.0)]

Chain 2:
  arcanite-core [arcanite-core [269](R 269.0)]
    import: (&(osgi.wiring.package=com.querydsl.core)(version>=4.2.0)(!(version>=5.0.0)))
     |
    export: osgi.wiring.package=com.querydsl.core; uses:=com.google.common.collect
  com.querydsl.core [com.querydsl.core [255](R 255.0)]
    import: (&(osgi.wiring.package=com.google.common.collect)(version>=18.0.0))
     |
    export: osgi.wiring.package: com.google.common.collect
  com.google.guava [com.google.guava [172](R 172.0)] Unresolved requirements: [[arcanite-core [269](R 269.0)] osgi.wiring.package; (&(osgi.wiring.package=com.querydsl.core)(version>=4.2.0)(!(version>=5.0.0)))]

在导入项目时,我已明确导入18.0版本:

<Import-Package>
...
com.google.common.collect;version="[18.0,19.0)",
*
<Import-Package>

我如何摆脱这种冲突,这真的是关于在Karaf中只有一个版本的Guava(OSGI),我在做什么错?

osgi apache-karaf
1个回答
0
投票

好吧,这很棘手,因为说cxf功能构成了Guava 20.0的依赖。然后在里面安装带有query-dsl和guvava 18.0 jar的我自己的功能。但是,根据maven并没有解决对番石榴的依赖性querydsl,而是根据karaf中已经存在的番石榴,所以20.0。

当我现在安装带有query-dsl和guava 18.0的捆绑软件时,就会发生冲突。

最后,我从功能中删除了18.0库,并在我的项目中允许使用更大的版本范围:...com.google.common.collect; version =“ [18.0,23.0)”,*

冲突消失了,让我想知道如何在feature.xml中的querydsl和guava 18.0之间指定这种依赖关系,如果可能的话。

© www.soinside.com 2019 - 2024. All rights reserved.