无法设置 DefaultExternalModuleDependency 的只读属性“group”的值

Joe*_*Dow 3 android gradle

我正在解决由新库引起的构建过程导致的重复问题。有一些重复的类或整个包bouncycastle。问题是排除一个类或整个组的默认方式带来了这个问题:

Caused by: groovy.lang.GroovyRuntimeException: Cannot set the value of read-only property 'group' for DefaultExternalModuleDependency{group='org.web3j', name='core', version='4.8.7-android', configuration='default'} of type org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency
Run Code Online (Sandbox Code Playgroud)

代码本身:

implementation('org.web3j:core:4.8.7-android') {
    exclude(group = 'org.bouncycastle')
}
Run Code Online (Sandbox Code Playgroud)

过去几年排除的用法有什么变化吗?

M.R*_*uti 11

这只是一个语法问题,该exclude方法需要一个Map参数。看起来您正在使用 Groovy DSL,并且在 Groovy 中映射是使用: 字符创建的(在 Kotlin DSL 中您将=像您一样使用)

因此只需将=赋值替换为:如下:

    implementation('org.web3j:core:4.8.7-android') {
        exclude(group : 'org.bouncycastle')
    }
Run Code Online (Sandbox Code Playgroud)

请参阅此处的一些示例https://docs.gradle.org/current/userguide/dependency_downgrade_and_exclude.html#sec:exclusion-transitive-deps