我有一些依赖项的项目,我正在使用Gradle。
我通过以下方式声明它们:
dependencies {
compile 'org.json:json:20180130'
compile 'com.test.myapi:1.0.1'
}
com.test.myapi:1.0.1
jar里面有org.json(我已经弃用了。)现在,我需要使用
JSONTokener
函数,该函数在最新版本中具有新的构造函数,而我的com.test.myapi
包中没有该函数。在我使用distroJar时,该构建成功创建了jar和tgz,但是由于某些原因,它采用了旧版本中的
JSONTokener
方法,因此出现运行时错误。有什么方法可以迫使项目从新项目中获取org.json,或者从内部软件包中禁用org.json?
谢谢。
最佳答案
假设myapi
将与新版本的org.json
一起使用,您可以排除像这样的旧版本
compile ('com.test.myapi:1.0.1'){
exclude group: 'org.json', module:'json'
}
您还可以使用
project-report
插件来探索有害依赖来自何处。Using gradle to find dependency tree
显然排除在 super jar 上不起作用。