我有一些依赖项的项目,我正在使用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 上不起作用。

10-05 21:13
查看更多