如何在交换内部库依赖项时在Gradle中添加对jar的依赖项
我正在尝试将jar依赖项添加到我的Android项目中:如何在交换内部库依赖项时在Gradle中添加对jar的依赖项,gradle,android-gradle-plugin,Gradle,Android Gradle Plugin,我正在尝试将jar依赖项添加到我的Android项目中: dependencies { compile files('<SOME_JAR>') } 依赖项{ 编译文件(“”) } 但是这个jar打包了一个我不想包含的库依赖项。相反,我想声明库的更新版本: dependencies { compile '<NEW_VERSION_LIBRARY>' compile files('<SOME_JAR>') { exclude '<OL
dependencies {
compile files('<SOME_JAR>')
}
依赖项{
编译文件(“”)
}
但是这个jar打包了一个我不想包含的库依赖项。相反,我想声明库的更新版本:
dependencies {
compile '<NEW_VERSION_LIBRARY>'
compile files('<SOME_JAR>') {
exclude '<OLD_VERSION_LIBRARY>'
}
}
依赖项{
编译“”
编译文件(“”){
排除“”
}
}
在Gradle中是否可以实现类似的功能?如果依赖项正在加载给定库的多个版本,并且您希望使用特定版本,那么您可以执行类似操作,这将始终使用Groovy 2.4.5:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'org.codehaus.groovy') {
details.useVersion '2.4.5'
}
}
}
如果您只是不想加载某个特定的依赖项,因为您更喜欢使用其他依赖项,那么您需要这样的东西,它将排除Apache Commons日志,并替换SLF4J和Logback:
dependencies {
compile ( "com.orientechnologies:orientdb-graphdb:2.0.7" ) {
exclude module:'commons-logging'
}
compile 'org.slf4j:slf4j-api:1.7.12'
runtime 'org.slf4j:jcl-over-slf4j:1.7.12'
runtime 'ch.qos.logback:logback-classic:1.1.3'
}
您是说“SOME_JAR”JAR中有一个或多个打包的JAR文件,您想排除这些文件吗?依赖项排除不能做到这一点。如果您只想使用新版本,那么只需声明新版本的依赖关系。“SOME_JAR”具有静态库依赖关系;库的文件是在jar中复制的,但是库的版本比我想要的旧。我遇到的问题是,在运行时,应用程序链接的是这个旧版本,而不是新版本。我在Gradle中寻找解决方案,但似乎没有。但是如果依赖项打包在一个jar中,似乎没有办法排除和替换,对吗?@Julian如果你想排除打包在jar中的类,那么是的,没有办法。如果要从另一个jar中拖出整个jar,那么可能有一种方法可以排除/替换依赖项。Gradle不支持类级别的依赖关系管理,只支持jar级别的依赖关系管理。