这种依赖性给了我一个jar的两个版本。 我该如何解决?
我正在使用Gradle作为我的项目。 我在build.gradle中指定的依赖项之一是
compile 'org.glassfish.jersey.media:jersey-media-moxy:2.0'
这在普通的Java应用程序上工作正常,但是当我尝试在Android上构建它时,我得到:
在查看引用的库时,很明显有javax.inject-2.3.0-b05.jar
和javax.inject-1.jar
,我发现它们都是由上面的依赖项添加的。 我猜这个“重复”的jar是造成构建错误的原因。
我该如何解决这个问题? 为什么依赖包含两个相同的jar? 有没有办法用这两个jar子制作Android版本或删除其中一个jar子?
你似乎有一个依赖树
project |--- org.glassfish.jersey.media:jersey-media-moxy:2.0 | \--- *:javax.inject:1 \--- *:javax.inject:2.3.0-b05
哪个*是该组,我怀疑可能与这两个组不同。
尝试通过使用依赖项任务了解如何获取依赖项
gradle dependency
如果您需要排除依赖项,请在标记中输入它,类似于以下示例
compile('org.hibernate:hibernate:3.1') { //excluding a particular transitive dependency: exclude module: 'cglib' //by artifact name exclude group: 'org.jmock' //by group exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group }
通常gradle每个依赖项只包含1个jar。 如果找到相同依赖项的不同版本,则将使用较新版本。
但是,在您的情况下,这两个jar是具有不同组名的依赖项:
'javax.inject:javax.inject:1' 'org.glassfish.hk2.external:javax.inject:2.3.0-b05'
这就是gradle包含两者的原因,因为它们被视为不同的依赖关系。
‘javax.inject:javax.inject:1’很老了,我想你应该像Niels Bech Nielsen所说的那样排除它。
要找出此依赖项的来源,可以使用命令:
gradle -q dependencyInsight --dependency inject