variables - 如何将参数或参数传递到 Gradle 任务中?

标签 variables gradle groovy parameters build.gradle

我有一个 Gradle 构建脚本,我试图将 Eric Wendelin's CSS plugin 包含在其中.

它很容易实现,而且因为我只想要缩小(而不是组合和压缩),所以我得到了构建脚本的相关部分,如下所示:

minifyCss {
    source = "src/main/webapp/css/brandA/styles.css"
    dest = "${buildDir}/brandA/styles.css"
    yuicompressor {
        lineBreakPos = -1
    }
}

war {
    baseName = 'ex-ren'
}

war.doFirst {
    tasks.myTask.minifyCss.execute()
}

这很完美 - 当我运行 gradle war 任务时,它调用 minifyCss 任务,获取源 css 文件,并在 buildDir 中创建缩小版本

但是,我有一些 css 文件需要 minify-ing,但不合并为一个文件(因此我没有使用 mergeCss 任务)

我想要做的是创建某种 minifyCss 任务引用变量的 source 和 dest 属性(假设这是正确的术语?) - 或者是在签名中传递到任务的变量,或者是全局变量变量,或者其他什么...

我猜是这样的(这不起作用):

minifyCss(sourceFile, destFile) {
    source = sourceFile
    dest = destFile
    yuicompressor {
        lineBreakPos = -1
    }
}

war {
    baseName = 'ex-ren'
}

war.doFirst {
    tasks.myTask.minifyCss.execute("src/main/webapp/css/brandA/styles.css", "${buildDir}/brandA/styles.css")
    tasks.myTask.minifyCss.execute("src/main/webapp/css/brandB/styles.css", "${buildDir}/brandB/styles.css")
    tasks.myTask.minifyCss.execute("src/main/webapp/css/brandC/styles.css", "${buildDir}/brandC/styles.css")
}

这也不起作用:

def sourceFile = null
def destFile = null

minifyCss {
    source = sourceFile
    dest = destFile
    yuicompressor {
        lineBreakPos = -1
    }
}

war {
    baseName = 'ex-ren'
}

war.doFirst {
    sourceFile = "src/main/webapp/css/brandA/styles.css"
    destFile = "${buildDir}/brandA/styles.css"
    tasks.myTask.minifyCss.execute()
}

我一生都无法弄清楚如何调用任务并传递变量:(

非常感谢任何帮助;

最佳答案

您应该考虑在调用 Gradle 时传递 -P 参数。

来自Gradle Documentation :

--project-prop Sets a project property of the root project, for example -Pmyprop=myvalue. See Section 14.2, “Gradle properties and system properties”.

考虑这个 build.gradle

task printProp << {
    println customProp
}

调用 Gradle -PcustomProp=myProp 将给出以下输出:

$ gradle -PcustomProp=myProp printProp
:printProp
myProp

BUILD SUCCESSFUL

Total time: 3.722 secs

这是我发现传递参数的方式。

关于variables - 如何将参数或参数传递到 Gradle 任务中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20410854/

相关文章:

bash - 不了解基本的 Bash 变量和命令分组

php - 将变量从 BASH 传递到 PHP

JavaScript,找不到变量

selenium - 等到 CustomKeywords 中的操作完成后再继续,Katalon Studio

java - 提前引用变量?

java - 如何更改 JitPack 中的版本?

android - 我的毕业典礼无法建立任何新项目

java - 调用 Web 服务方法时无法转换对象错误

java - 当我点击groovy中的按钮时如何获得弹出窗口

Android Studio 2.2 Gradle 更新失败