在 pom.xml 或 manifest.yml 中指定 JDK 的版本?

Specify JDK's version in pom.xml or manifest.yml?

我有一个 java 应用程序,我想将其部署到 Cloud Foundry。我想指定它的 JDK 版本。我搜索了一些文章,但我不知道在哪里做。

在某些文章中说我需要使用 java-buildpack 并在 manifest.yml 或 cf 命令中指定环境。例如

但其他一些人说我可以在 pom.xml 中使用 -source 和 -target 属性指定 JDK 版本。例如http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

谁能告诉我区别,我应该选择哪一个?

您需要为您的应用程序 manifest.yml 文件提供 JRE 版本。

java buildpack 当前支持 OpenJDK, Oracle or Azul Zulu JRE。假设您使用的是 OpenJDK,构建包支持开箱即用的 JRE 版本 1.61.71.8

要设置 JRE 版本,只需在您的应用程序清单中指定一个环境变量,如下所示:

---
applications:
- name: my-java-app
  memory: 512M
  env:
    JBP_CONFIG_OPEN_JDK_JRE: '{ jre: { version: 1.8.0_+ } }'

java 构建包不查看 pom.xml 文件。它假定您部署了应用程序的编译版本(例如 JAR 或 WAR 文件。)

感谢此 post 中的一些评论,我能够通过使用来自 PCF CLI

的命令在 pcf 中设置目标 jdk
$ cf set-env <app-name> JBP_CONFIG_OPEN_JDK_JRE '{ jre: { version: 11.0.6_10 } }