Google app engine 如何动态设置appengine gradle属性

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

如何创建一个动态设置应用程序引擎项目id并运行
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运行配置。