Google app engine 如何动态设置appengine gradle属性
如何创建一个动态设置应用程序引擎项目id并运行Google app engine 如何动态设置appengine gradle属性,google-app-engine,gradle,google-cloud-platform,Google App Engine,Gradle,Google Cloud Platform,如何创建一个动态设置应用程序引擎项目id并运行appengineDeploy任务的任务 在这个例子中,当我运行deployStagingappengineDeploy时,我如何重写此代码以使其与项目“b”一起运行 buildscript { dependencies { classpath("com.google.cloud.tools:appengine-gradle-plugin:2.0.1") } } apply plugin: 'com.google.cl
appengineDeploy
任务的任务
在这个例子中,当我运行deployStaging
appengineDeploy
时,我如何重写此代码以使其与项目“b”一起运行
buildscript {
dependencies {
classpath("com.google.cloud.tools:appengine-gradle-plugin:2.0.1")
}
}
apply plugin: 'com.google.cloud.tools.appengine'
def gcpProject = 'a'
appengine {
deploy {
projectId = gcpProject
}
}
task deployStaging() {
doLast {
gcpProject = 'b'
}
}
deployStaging.finalizedBy appengineDeploy
改用a怎么样?项目属性可以通过-P
命令行参数传递:
buildscript {
dependencies {
classpath("com.google.cloud.tools:appengine-gradle-plugin:2.0.1")
}
}
apply plugin: 'com.google.cloud.tools.appengine'
def gcpProject = project.findProperty('stageName') ?: 'a'
appengine {
deploy {
projectId = gcpProject
}
}
现在,如果只调用
/gradlew appengineDeploy
,gcpProject
变量的值为“a”。如果调用/gradlew appengineDeploy-PstageName=b
,gcpProject
变量的值为“b”。gradle插件提供的答案:
appengine {
deploy {
version = "123"
// do not define projectId here
}
}
task deployStaging {
dependsOn appengineDeploy
}
task deployProduction {
dependsOn appengineDeploy
}
// here's the weird gradle logic, use at your own risk
if (project.gradle.startParameter.taskNames.contains("deployStaging")) {
appengine.deploy.projectId = "potato-stage"
}
else if(project.gradle.startParameter.taskNames.contains("deployProduction")) {
appengine.deploy.projectId = "tomato-prod"
}
请回答@britter。此外,还有一种与您建议的解决方案类似的解决方案。在我的情况下,如果可能的话,我希望有不同的任务来避免在Intelliji上添加此配置。如果您真的不能这样做,则必须使用
task deployStage(type:DeployTask)
创建DeployTask类型的额外任务。然后,由于插件的实现方式(),您需要注入自己的自定义部署配置。我真的建议使用项目属性并在IntelliJ中定义自定义gradle运行配置。