我有一些我在mutliple项目中使用的库。我在库中的代码与更多版本的库(旧版和新版)兼容。但是库中的更改与所有构建版本都不兼容。
我有一个较旧的项目,我目前不想更新到最新的构建工具版本,所以对于这个单项目,我想强制覆盖依赖项。
通常我会从库中排除依赖关系,如下所示:
compile ("com.doomonafireball.betterpickers:library:1.6.0") {
exclude group: 'com.android.support', module: 'support-v4'
}
如何从本地库项目中排除依赖项?我试过了
compile project(':dialogs') {
exclude group: 'com.afollestad.material-dialogs'
}
但是这不能编译......
修改
这是我的对话框库:
compile('com.afollestad.material-dialogs:core:0.8.4.2@aar') {
transitive = true;
}
compile('com.afollestad.material-dialogs:commons:0.8.4.2@aar') {
transitive = true;
}
这就是我尝试过的,但它不起作用:
compile(project(':dialogs')) {
exclude group: 'com.afollestad.material-dialogs'
}
compile 'com.afollestad:material-dialogs:0.7.8.1'
问题:它编译并运行,但我得到NoSuchMethod
例外。当我只是注释掉0.8.4.2库行并将其替换为0.7.8.1行(所有在我的库中)时一切正常......
答案 0 :(得分:6)
这是一个语法问题。您正在调用exclude的闭包被解释为project()方法的参数,这是不正确的。应该是这样的:
compile(project(':baseproject')) {
exclude group: 'com.miglayout'
}
看到编译用大括号包裹项目 <)