我必须从多模块项目的所有模块中排除一些依赖项。 使用Gradle 1.12,以下gradle构建文件有效:
subprojects {
...
//blacklisted dependencies
configurations {
all*.exclude module: 'ojdbc14' //we use ojdbc6
all*.exclude group: 'c3p0', module: 'c3p0' //newer versions use groupId: com.mchange
all*.exclude module: 'oracledb' //we use ojdbc6
...
}
...
}
升级到gradle版本2.1后出现错误:
您无法更改配置'providedCompileScope',因为它是 已经解决了!
如何使用较新的Gradle定义排除?
答案 0 :(得分:1)
通常,我会通过指定
来排除传递依赖性dependencies {
myConfiguration('group:module:version') { transitive = false }
}
要对版本等进行更精细的控制,请查看ResolutionStrategy
答案 1 :(得分:1)
排除仍以相同方式指定。 Gradle只是告诉你之前没有告诉你的构建问题,即只能在配置解析之前声明排除。可能有一些自定义代码在configurations.providedCompileScope
(或派生配置)上进行迭代,并且在配置阶段(即在构建脚本的评估期间)错误地执行,而不是在执行阶段(例如在任务操作中) )。此代码段(以及生成的--stacktrace
)可能有助于找到有问题的代码:
configurations.providedCompileScope.incoming.beforeResolve {
println new Exception("resolved here")
}
编辑:如果您的某个构建脚本中包含以下内容:
idea.module {
scopes.PROVIDED.plus += configurations.providedCompileScope
}
将其更改为:
idea.module {
scopes.PROVIDED.plus += [configurations.providedCompileScope]
}
由于Gradle 2.x使用的Groovy版本中的行为更改,这是必要的。