I am solving duplicate issue due build process caused by a new library. There are some duplicate classes or a whole package of bouncycastle
. The issue is the default way to exclude a class or a whole group brings this issue:
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
Code itself:
implementation('org.web3j:core:4.8.7-android') {
exclude(group = 'org.bouncycastle')
}
Is there some changes in exclude usage over the past few years?
CodePudding user response:
It's just a syntax issue, the exclude
method expects a Map
parameter. it looks like you are using the Groovy DSL, and in Groovy maps are created using :
character ( in Kotlin DSL you would use =
as you did)
So just replace =
assignement by :
as follows:
implementation('org.web3j:core:4.8.7-android') {
exclude(group : 'org.bouncycastle')
}
See some examples here https://docs.gradle.org/current/userguide/dependency_downgrade_and_exclude.html#sec:excluding-transitive-deps