我有plugins:
groovy
,jacoco
和maven
的gradle构建脚本。
在罐子旁边的依赖是:
testCompile group: 'org.spockframework', name: 'spock-core', version: '0.7-groovy-2.0'
现在我创建了task integTest(Type: Test)
和:
configurations{
integTestCompile {
extendsFrom testCompile
}
integTestRuntime {
extendsFrom integTestCompile
}
}
一切正常,但我想添加一些模块化,现在所有的integTest任务都是这样创建的:
task "${module}_${suite}" (type: Test)
当我尝试在配置中实现相同的更改时,我收到了错误:
Could not find method ModuleName_Suite1Runtime() for arguments [build_55s7pmm2c6k8n8e2n1i59t3b5b$_run_closure5_closure28_closure29_closure31@3394214b] on root project 'projectName'.
的
configurations {
"${module}_${suite}Compile"{
extendsFrom testCompile
}
"${module}_${suite}Runtime"{
extendsFrom "${module}_${suite}Compile"
}
}
和另一个配置不同的错误:
No signature of method: java.lang.String.extendsFrom() is applicable for argument types: (org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated) values: [configuration ':testCompile']
的
configurations{
"${module}_${suite}Compile".extendsFrom(testCompile)
"${module}_${suite}Runtime".extendsFrom("${module}_${suite}Compile")
}
没有" taskName +编译"和" taskName + Runtime"我得到spock规范的ClassNotFound Exception。所以我确信我需要像以前的版本一样。
我非常确定它是直截了当的,但我无法在谷歌找到任何提示。 任何帮助将不胜感激。
答案 0 :(得分:1)
configurations {...}
块中使用的语法是通过一些Groovy魔法实现的,遗憾的是当你使用String文字时不会调用它。相反,如果您要创建具有动态名称的配置,则需要在create()
上调用ConfigurationsContainer
方法。
configurations.create("${module}_${suite}Compile") {
extendsFrom configurations.testCompile
}