我有一个 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 参数。
--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/