任务的gradle配置

时间:2015-01-07 21:04:46

标签: groovy gradle

我有plugins: groovyjacocomaven的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。所以我确信我需要像以前的版本一样。

我非常确定它是直截了当的,但我无法在谷歌找到任何提示。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

configurations {...}块中使用的语法是通过一些Groovy魔法实现的,遗憾的是当你使用String文字时不会调用它。相反,如果您要创建具有动态名称的配置,则需要在create()上调用ConfigurationsContainer方法。

configurations.create("${module}_${suite}Compile") {
    extendsFrom configurations.testCompile
}