是否可以配置自定义Gradle任务,使其仅在非本地环境中运行?
task runMeOnlyInNonLocalEnvironments {
doLast {
println "This is not a local environment"
}
}
答案 0 :(得分:1)
首先在build.gradle.kts
文件中:
tasks.register("runMeOnlyInNonLocalEnvironments") {
doLast {
if(project.hasProperty("isNonLocal")) {
println("Running task in non local environment")
}
}
}
然后,您必须设置项目属性,可以通过以下方法实现:
gradle.properties
将以下任意一项放入gradle.properties文件中
a)isNonLocal=true
b)systemProp.org.gradle.project.isNonLocal=true
然后运行gradle runMeOnlyInNonLocalEnvironments
命令行参数
gradle -PisNonLocal=true runMeOnlyInNonLocalEnvironments
通过环境变量
在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"
}
}