如何在执行时修改复制任务的属性?

时间:2017-04-04 07:06:43

标签: gradle groovy

我有一个Gradle复制任务设置来发布未修饰的JAR文件以进行测试和调试,即

任务定义:

 task copyJarToStaging( type: Copy ) {
     from jar // shortcut for createJar.outputs.files
     into ( "${rootProject.rootDir}/dist/" )
     rename( '-.*\\.jar', ".jar" )
 }

将JAR文件放入一个目录中。真正需要的是将JAR放入" dist/"下的一个或多个不同的文件夹中。

经过多次试验(以及错误)后,我发现这个版本对我有用。

调用复制任务:

// build.gradle  (module)

assemble.dependsOn copyJarToStaging {
    println "into ==> ${destinationDir}/support"
    into "${destinationDir}/support/"
}

然而,它并没有真正闻到

有更清洁的替代方式吗?我本来希望一个闭包只是附加到into属性 - 但它没有去。

如果我想在不同的地方使用相同的文件,那么我可以做更好的事情,例如取回into字符串和yield每个值。

部分或全部可能吗?或者,我在做梦吗???

1 个答案:

答案 0 :(得分:1)

通常,您可以创建多个复制任务

['dev', 'staging', 'uat', 'prod'].each { String dir ->
    Task task = tasks.create("copyJarTo${dir.capitalize()}", type: Copy) {
        from jar
        into "dist/$dir"
    }
    assemble.dependsOn task
}