在本地环境中跳过Gradle任务

时间:2020-01-23 15:42:16

标签: gradle

是否可以配置自定义Gradle任务,使其仅在非本地环境中运行?

task runMeOnlyInNonLocalEnvironments {    
  doLast {
    println "This is not a local environment"    
  }
}

2 个答案:

答案 0 :(得分:1)

首先在build.gradle.kts文件中:

tasks.register("runMeOnlyInNonLocalEnvironments") {
    doLast {
      if(project.hasProperty("isNonLocal")) {
         println("Running task in non local environment")
      }
    }
}

然后,您必须设置项目属性,可以通过以下方法实现:

  1. gradle.properties

    将以下任意一项放入gradle.properties文件中

    a)isNonLocal=true

    b)systemProp.org.gradle.project.isNonLocal=true

    然后运行gradle runMeOnlyInNonLocalEnvironments

  2. 命令行参数

    gradle -PisNonLocal=true runMeOnlyInNonLocalEnvironments

  3. 通过环境变量

    在Unix变体中,您可以在运行gradle export ORG_GRADLE_PROJECT_isNonLocal=true

    的地方输入命令提示符

    然后运行gradle runMeOnlyInNonLocalEnvironments

答案 1 :(得分:0)

您可以使用task.onlyIf告诉Gradle何时跳过它。您仍然需要一种方法来确定机器何时是“非本地”的。如果您可以控制这些机器,最简单的方法可能是在它们上创建一个环境属性,将它们标记为特定类型。例如,如果您只想在CI机器上运行任务,则它看起来像:

task runMeOnlyInNonLocalEnvironments  {
    onlyIf {
        System.getenv().containsKey('CI')
    }

    doLast {
        println "This is not a local environment"
    }
}