相关疑难解决方法(0)

如何将参数从命令行传递给gradle

我正在尝试将参数从命令行传递给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

90
推荐指数
6
解决办法
14万
查看次数

如何将参数或参数传递给gradle任务

我有一个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)

variables parameters groovy gradle

42
推荐指数
6
解决办法
9万
查看次数

Gradle任务检查是否定义了属性

我有一个执行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)

但是我得到一个未定义的属性错误.这是怎样的正确方法?

testng properties task gradle

34
推荐指数
1
解决办法
3万
查看次数

标签 统计

gradle ×3

groovy ×1

parameters ×1

properties ×1

task ×1

testng ×1

variables ×1