从条件运行gradle任务

时间:2016-06-23 11:13:06

标签: gradle

我比较陌生,所以请耐心等待我。 我的build.gradle:

def releaseBol = false

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    lintOptions {
        abortOnError false
    }

    ...
    if (project.hasProperty('RELEASE') && project.ext.RELEASE == '1')
        releaseBol = true


    if (releaseBol)
    {
       ..
       //some code
       ..

    }

}

...

task runScheduleReader()  {
    javaexec {
        println 'here1'
        main="-jar";
        args = [
                "../Generator.jar"

        ]
    }
}

如果runScheduleReader设置为releaseBol,我希望运行true,但只是将其移到那里时会出错,我该怎么做?

2 个答案:

答案 0 :(得分:3)

尝试:

task runScheduleReader()  {
    enabled = releaseBol
    doLast {
       javaexec {
          println 'here1'
          main="-jar";
          args = [
                "../Generator.jar"
          ]
       }
    }
}

请查看enabling and disabling个任务。第二个问题是您在配置时添加了逻辑,因此每次评估脚本时都会执行该逻辑。您需要使用doLast添加操作。

答案 1 :(得分:1)

Opal提供的solution是正确的,你可以使用enabled任务选项来跳过stask执行。但这不是你必须做的唯一改变。

您目前是一个没有任何类型的任务,并在任务关闭中使用javaexec。这使得javaexec在构建配置阶段运行并且enabled属性值没有意义。您可以通过以下两种方式使其在执行阶段运行:将javaexec移动到doLast闭包中:

task runScheduleReader()  {
    enabled = releaseBol
    doLast {
        javaexec {
            println 'here1'
            main = "-jar";
            args = [
                    "../Generator.jar"
            ]
        }
    }
}

或者设置任务的类型并将配置移动到它的闭包根:

task runScheduleReader(type: JavaExec)  {
    enabled = releaseBol

    println 'here1'
    main = "-jar";
    args = [
            "../Generator.jar"
    ]

}