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

标签 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取回每个值。

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

最佳答案

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

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

关于gradle - 如何在执行时修改复制任务的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43200494/

相关文章:

groovy - 在 tokenize() groovy 中包含空值或空格

Android - 编译后 Kotlin 文件存在于 apk 中

jakarta-ee - gradle:无法为 org.gradle.api.Project 类型的根项目设置只读属性 'module' 的值

java - Gradle项目是否可以重建其依赖项,跟踪其源更改等?

java - Gradle找不到tools.jar

groovy - Gradle 构建不包括 source/src groovy

gradle - Gradle属性在扩展容器封闭中不可见

java - Storm 攻击和失败

grails - 在grails中使用相同的id更新许多项目

grails - 在 JDBC 设置之后尝试启动 Grails 时出错