我想在我的Android项目中使用json-schema-validator,如下所示:
dependencies {
compile 'com.github.fge:json-schema-validator:2.1.8'
}
不幸的是,由于此文件重复错误,Gradle停止打包:
Path in archive: draftv3/schema
Origin 1: /Users/andrej/.gradle/caches/modules-2/files-2.1/com.github.fge/json-schema-validator/2.1.8/4c2a5be8ce86c2338561a651d7d22fb4c4a8763d/json-schema-validator-2.1.8.jar
Origin 2: /Users/andrej/.gradle/caches/modules-2/files-2.1/com.github.fge/json-schema-core/1.1.9/4ead9ba3fb3bde69d93f738042d12a9e60e41645/json-schema-core-1.1.9.jar
我知道我可以忽略这样的文件:
packagingOptions {
exclude 'draftv3/schema'
}
但该文件由json-schema-validator和json-validator-core使用,因此在生成的APK中需要它。
如何保持Gradle继续打包,同时保留此文件的两个版本之一(它们相同)?
谢谢, 安德烈
答案 0 :(得分:1)
对于其他人来说,这里是一个快速的解决方法,直到Gradle将添加包装选项与适当的重复策略:
android.applicationVariants.all { variant->
variant.assemble.doFirst {
exec {
executable "sh"
args "-c", "find ~/.gradle/caches/ -iname 'json-schema-validator*.jar' -exec zip -d '{}' 'draftv3/schema' \\;"
args "-c", "find ~/.gradle/caches/ -iname 'json-schema-validator*.jar' -exec zip -d '{}' 'draftv4/schema' \\;"
}
}
}
答案 1 :(得分:1)
通过明确提及build.graddle文件中的draftv / schema文件,我们可以解决此问题。
android {
...
packagingOptions {
...
pickFirst 'draftv3/schema'
pickFirst 'draftv4/schema'
}
}
答案 2 :(得分:0)
请尝试以下操作,仅从您的依赖项中排除draftv3/schema
:
dependencies {
compile('com.github.fge:json-schema-validator:2.1.8') {
exclude 'draftv3/schema'
}
}