我遇到过Gradle似乎没有处理包含多个同名JAR的flatDir的情况。
我试图创建一个包含ANTLR 3.1.3和ANTLR 2.7.7的配置,奇怪的是3.1.3恰好依赖于2.7.7。
build.gradle
apply plugin: 'java'
configurations {
antlr3
}
dependencies {
antlr3 "org.antlr:antlr:3.1.3"
antlr3 "org.antlr:antlr:2.7.7"
antlr3 "org.antlr:antlr-runtime:3.1.3"
}
repositories {
flatDir {
dir projectDir
}
}
task horse {
doLast {
configurations.antlr3.resolvedConfiguration.resolvedArtifacts.file.each {
println it
}
}
}
在磁盘上:
./antlr-2.7.7.jar
./antlr-3.1.3.jar
./antlr-runtime-3.1.3.jar
./build.gradle
只会设置第一个依赖项,所以gradle horse
:horse
/home/socky-wocky-do-dah/project-3/antlr-3.1.3.jar
/home/socky-wocky-do-dah/project-3/antlr-runtime-3.1.3.jar
BUILD SUCCESSFUL
如果交换依赖关系的顺序,则解析2.7.7 JAR。
使用flatDir
时,如何让Gradle引入3.1.3和2.7.7 JAR?