考虑以下构建脚本
addToMyConfig
添加对 Configuration 的依赖项命名为myConfig
useMyConfig
使用myConfig
Configuration并强制其 resolve()
configurations {
myConfig
}
task addToMyConfig {
doLast {
println "Doing some work"
dependencies {
myConfig 'log4j:log4j:1.2.17'
}
}
}
task useMyConfig {
doLast {
println "myConfig = $configurations.myConfig.files"
}
}
问题:有没有办法在每次解析 configurations.myConfig
时触发 addToMyConfig
,而不添加任务依赖项,其中 useMyConfig
依赖于 addToMyConfig
?
我想说:
configurations.myConfig.builtBy addToMyConfig
**我不想说**
useMyConfig.dependsOn addToMyConfig
我想避免 useMyConfig.dependsOn addToMyConfig
因为可能有很多任务消耗 configurations.myConfig
注意:有一个 ConfigurableFileCollection.builtBy(Object... tasks)可以解决我的问题的方法,只要它存在于 Configuration 上即可接口(interface)(配置扩展FileCollection)
最佳答案
您真的需要一个任务
来使用依赖项填充配置
吗?
Configuration#withDependencies
可用于在解析期间添加依赖项。像这样:
configurations {
myConfig
}
configurations.myConfig.withDependencies {deps ->
println "Resolving dependencies"
dependencies {
myConfig "log4j:log4j:1.2.17"
}
}
task useMyConfig {
doLast {
println "myConfig = $configurations.myConfig.files"
}
}
关于Gradle配置 "builtBy"一个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295791/