【问题标题】:Specify JDK's version in pom.xml or manifest.yml?在 pom.xml 或 manifest.yml 中指定 JDK 的版本?
【发布时间】:2017-04-21 03:05:18
【问题描述】:

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

在一些文章中说我需要使用 java-buildpack 并在 manifest.yml 或 cf 命令中指定环境。例如How can I change the version of Java used in Bluemix?

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

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

【问题讨论】:

  • pom.xml 中的设置只是javac 编译器在编译期间使用的值,与您尝试部署到的位置完全无关。

标签: java maven spring-boot cloud-foundry


【解决方案1】:

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

java buildpack 目前支持OpenJDKOracleAzul Zulu JRE。假设您使用的是 OpenJDK,JRE 版本 1.61.71.8 由 buildpack 开箱即用地支持。

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

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

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

【讨论】:

  • 两个注意事项: 1.) 除非您有充分的理由,否则不应设置构建包安装的 JDK 版本。通常,构建包将安装最新版本的软件。这是关于构建包、自动升级的好处之一。如果您选择特定版本的 JDK,例如 1.8.0_131,那么您将不会获得额外的更新。你在那里冻僵了。如果您像本示例一样在末尾使用+(Java BP 特定),您将获得对次要版本的更新。这有点好,但一般你不应该多管闲事。
  • 2.) 在 manifest.yml 中设置 JDK 的版本与使用 cf set-env JBP_CONFIG_OPEN_JDK_JRE '{ jre: { version: 1.8.0_+ } }' 没有什么不同。他们都在设置一个环境变量,Java 构建包将在该变量上确定要安装的版本。
【解决方案2】:

感谢本文中的一些 cmets,我能够使用 PCF CLI 中的此命令在 pcf 中设置目标 jdk

$ cf set-env <app-name> JBP_CONFIG_OPEN_JDK_JRE '{ jre: { version: 11.0.6_10 } }

【讨论】:

    猜你喜欢
    • 2015-08-18
    • 2023-04-04
    • 2019-06-25
    • 2013-05-19
    • 1970-01-01
    相关资源
    最近更新 更多