我正在尝试将参数从命令行传递给java类.我关注这篇文章:http://gradle.1045684.n5.nabble.com/Gradle-application-plugin-question-td5539555.html但代码对我不起作用(也许它不适用于JavaExec?).这是我尝试过的:
task listTests(type:JavaExec){
main = "util.TestGroupScanner"
classpath = sourceSets.util.runtimeClasspath
// this works...
args 'demo'
/*
// this does not work!
if (project.hasProperty("group")){
args group
}
*/
}
Run Code Online (Sandbox Code Playgroud)
上述硬编码args值的输出为:
C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle>g listTests
:compileUtilJava UP-TO-DATE
:processUtilResources UP-TO-DATE
:utilClasses UP-TO-DATE
:listTests
Received argument: demo
BUILD SUCCESSFUL
Total time: 13.422 secs
Run Code Online (Sandbox Code Playgroud)
但是,一旦我更改代码以使用hasProperty部分并在命令行上传递"demo"作为参数,我会得到一个NullPointerException:
C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle>g listTests -Pgroup=demo -s
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle\build.gradle' line:25
* What went wrong:
A problem occurred evaluating root project 'testgradle'.
> java.lang.NullPointerException (no error …Run Code Online (Sandbox Code Playgroud) 我有一个gradle构建脚本,我试图包含Eric Wendelin的css插件 - http://eriwen.github.io/gradle-css-plugin/
它很容易实现,因为我只想缩小(而不是组合和gzipping),我已经得到了构建脚本的相关部分,如下所示:
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()
}
Run Code Online (Sandbox Code Playgroud)
这很完美 - 当我运行gradle war任务时,它调用minifyCss任务,获取源css文件,并在buildDir中创建一个缩小版本
但是,我有一些css文件需要缩小,但不能合并到一个文件中(因此我没有使用combineCss任务)
我希望能够做的是使用某种类型的minifyCss任务引用变量的源和目标属性(假设这是正确的术语吗?) - 传递给签名中的任务的变量,或全局变量,或者东西......
我觉得这样的东西(这不起作用):
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")
}
Run Code Online (Sandbox Code Playgroud)
这也不起作用:
def sourceFile = null
def destFile = null
minifyCss …Run Code Online (Sandbox Code Playgroud) 我有一个执行testng测试套件的gradle任务.我希望能够将标志传递给任务以便使用特殊的testng xml套件文件(或者如果未设置标志,则只使用默认套件).
gradle test
Run Code Online (Sandbox Code Playgroud)
应该运行默认的标准测试套件
gradle test -Pspecial
Run Code Online (Sandbox Code Playgroud)
应该运行特殊的测试套件
我一直在尝试这样的事情:
test {
if (special) {
test(testng_special.xml);
}
else {
test(testng_default.xml);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到一个未定义的属性错误.这是怎样的正确方法?