Пропустить задачу Gradle в локальной среде - PullRequest
0 голосов
/ 23 января 2020

Есть ли способ настроить пользовательскую задачу Gradle так, чтобы она выполнялась только в нелокальных средах?

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

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Прежде всего в файле 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

    Тогда run gradle runMeOnlyInNonLocalEnvironments

  2. Аргумент командной строки

    gradle -PisNonLocal=true runMeOnlyInNonLocalEnvironments

  3. Через переменную среды

    In unix вариантов, которые вы можете ввести в командной строке, где вы запускаете Gradle, export ORG_GRADLE_PROJECT_isNonLocal=true

    Затем запустить gradle runMeOnlyInNonLocalEnvironments

0 голосов
/ 24 января 2020

Вы можете использовать task.onlyIf, чтобы сообщить Gradle, когда его пропустить. Вам все еще понадобится способ выяснить, когда машина «нелокальна». Если у вас есть контроль над этими машинами, возможно, самый простой способ - создать на них свойство среды, которое помечает их как определенный тип. Например, если вы хотите запустить задачу только на компьютерах CI, она может выглядеть следующим образом:

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

    doLast {
        println "This is not a local environment"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...