Gradle 从条件运行梯度任务

Gradle 从条件运行梯度任务,gradle,Gradle,我对gradle比较陌生,所以请对我耐心一点。 我的身材。格雷德尔: def releaseBol = false android { compileSdkVersion 23 buildToolsVersion "23.0.2" lintOptions { abortOnError false } ... if (project.hasProperty('RELEASE') && project.ext.REL

我对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"

        ]
    }
}
如果
releaseBol
设置为
true
,我希望运行
runScheduleReader
,但在将其移动到那里时出现错误,我该如何执行此操作?

尝试:

task runScheduleReader()  {
    enabled = releaseBol
    doLast {
       javaexec {
          println 'here1'
          main="-jar";
          args = [
                "../Generator.jar"
          ]
       }
    }
}
请看一下任务。第二个问题是,您在配置时添加了逻辑,因此每次评估脚本时都会执行该逻辑。您需要使用
doLast
添加一个操作,请尝试:

task runScheduleReader()  {
    enabled = releaseBol
    doLast {
       javaexec {
          println 'here1'
          main="-jar";
          args = [
                "../Generator.jar"
          ]
       }
    }
}
请看一下任务。第二个问题是,您在配置时添加了逻辑,因此每次评估脚本时都会执行该逻辑。您需要添加一个带有
doLast

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

您当前的任务没有任何类型,并且在任务关闭中使用
javaexec
。这使得您在构建配置阶段运行的
javaexec
和启用的
属性值毫无意义。您可以通过以下两种方式使其在执行阶段运行:将
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"
    ]

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

您当前的任务没有任何类型,并且在任务关闭中使用
javaexec
。这使得您在构建配置阶段运行的
javaexec
和启用的
属性值毫无意义。您可以通过以下两种方式使其在执行阶段运行:将
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"
    ]

}

即使releaseBol处于禁用状态,它仍在运行false@Dim,您能提供这样一个运行的输出吗?仅禁用此任务没有任何帮助,因为它不是
JavaExec
类型,而是
JavaExec
在配置阶段执行的
doLast
doFirst
+答案是1anyway@Stanislav,当我外出跑步时,我得出了相同的结论;)谢谢即使releaseBol处于禁用状态,它仍在运行false@Dim,您能提供这样一个运行的输出吗?仅禁用此任务没有任何帮助,因为它不是
JavaExec
类型,而是
JavaExec
在配置阶段执行的
doLast
doFirst
+答案是1anyway@Stanislav,当我外出跑步时,我得出了相同的结论;)谢谢