我的项目有一些依赖项,我正在使用 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 。
关于Java - 依赖项上的包冲突,强制从其中选择一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48913999/