在 cloudfoundry 上的 spring 云数据流 运行 上部署任务时如何将参数传递给 buildpack?

how to pass arguments to the buildpack when deploying a task on spring cloud data flow running on cloudfoundry?

我 运行 Cloudfoundry (Swisscom) 上的 Spring 云数据流服务器。我能够正确注册一个任务(Spring 启动),但是由于错误的 java 运行 使用时间,任务无法启动:

   2019-08-26T11:30:41.57+0200 [APP/TASK/t1-x/0] OUT JVM Memory Configuration: -Xmx435467K -Xss1M -XX:ReservedCodeCacheSize=240M -XX:MaxDirectMemorySize=10M -XX:MaxMetaspaceSize=101108K
   2019-08-26T11:30:41.80+0200 [APP/TASK/t1-x/0] ERR Exception in thread "main" java.lang.UnsupportedClassVersionError: ch/xxx/task1/Task1Application has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
   2019-08-26T11:30:41.80+0200 [APP/TASK/t1-x/0] ERR    at java.lang.ClassLoader.defineClass1(Native Method)

当然这是由于 cloudfoundry java_buildpack 没有使用正确的 java 版本造成的。通常这很容易修复,我只是在部署应用程序时传递以下环境变量:

JBP_CONFIG_OPEN_JDK_JRE: '{jre: { version: 11.+ }}'

但是当 SCDF 正在部署 taks-application 时,我该怎么做呢?我知道有一个参数 deployer.cloudfoundry.buildpack=java_buildpack 可以在我开始任务时使用,但是我怎样才能将 arguments/environment 变量传递给 buildpack?

更新:

至于目前,关于这个问题有两个未解决的问题:

您可以像这样在启动任务时传递部署程序属性:

task launch <task-name> --properties "deployer.<app-name>.cloudfoundry.<deployerProperty>"

在这种情况下,要传递 buildpack 部署程序 属性,您可以这样做:

task launch <task-name> --properties "deployer.<app-name>.cloudfoundry.buildpack=<?>"

环境变量似乎在任务定义中指定为属性。参见 https://github.com/spring-cloud/spring-cloud-deployer-cloudfoundry/blob/master/src/main/java/org/springframework/cloud/deployer/spi/cloudfoundry/CloudFoundryAppDeployer.java#L278

在这种情况下,您必须为 Cloud Foundry 部署程序 use-spring-application-json=false

设置部署 属性

另请注意,推送应用程序时会应用环境变量,这只会在第一次启动任务时发生。如果该应用程序已经存在,您需要将其删除才能生效。