Jar项目识别策略
平台默认会根据源码根目录是否有Jar包来识别为Java Jar项目.
平台编译运行机制
- 预编译处理会探测是否定义了启动命令配置文件 Procfile ,如果未定义会生成默认Jar包启动配置文件;
- 预编译处理完成后,会根据语言类型选择Java-jar的buildpack去编译项目.在编译过程中会安装定义的JDK版本;
- 编译完成后会检查是否在平台设置了Procfile参数,若配置了会重写启动命令配置文件Procfile.
Jar项目源码规范
在此步骤中,你需要提供一个可用的Java Jar源码程序用来部署在Rainbond平台上,此应用程序至少需要满足如下条件:
- 本地可以正常运行的Jar包
- 源码程序必须托管在gitlab等相关 git 或者 svn 服务上(5.4起支持下载压缩包构建)
- 源码程序根路径下必须需要存在Jar包文件
Procfile规范
如果项目未定义Procfile文件,平台默认会生成默认Procfile来运行Jar包。
web: java -Dserver.port=$PORT $JAVA_OPTS -jar ./*.jar
上述是默认Procfile,如果需要扩展更多启动参数,可以自定义Procfile。
web:
和java
之间有一个空格- 文件结尾不能包含特殊字符
- JAVA_OPTS: 平台会根据应用的内存大小,自动设置Xmx和Xms的值
- PORT: 根据用户在平台设置的端口决定监听,默认监听端口为 5000
编译运行环境设置
在选择JDK版本或其他组件版本时,需要注意JDK或者其他组件版本不要选择比项目使用的版本过高或者过低以免导致源码编译失败
OpenJDK支持
当前Rainbond支持OpenJDK如下版本为:
- Java 1.6 -
1.6.0_27
- Java 1.7 -
1.7.0_95
- Java 1.8 -
1.8.0_74
- Java 1.9 -
1.9-latest
- Java 10 -
10.0.2
- Java 11 -
11.0.1
平台默认版本使用1.8
。若需要使用其他版本的OpenJDK,可以通过在源码根目录下添加system.properties
文件来设定java.runtime.version
的值来指定所需版本的JDK。
# system.properties 目前Rainbond能识别的版本值为11,10,1.9,1.8,1.7,1.6
java.runtime.version=1.8
OracleJDK支持
平台目前也支持OracleJDK,但此特性需要在平台里启用才会生效。
默认不内置提供OracleJDK下载,需要在设置里启用OracleJDK后配置相关OracleJDK下载地址。
OracleJDK下载地址格式要求: http://<web服务URL>/jdk-8u201-linux-x64.tar.gz
平台设置的配置优先级要高于程序代码中定义的配置,如Java JDK版本的选择,在程序代码里通过system.properties
指定了JDK版本为1.9,在平台上选择了JDK版本为11,那么默认在进行源码编译时会优先使用平台指定的版本JDK11
通过压缩包进行源码构建
平台从5.4起支持从下载地址下载压缩包构建(支持的压缩包格式为 tar, tar.gz, zip), 通过压缩包构建的入口在源码创建组件中,仓库地址选择OSS。此特性需要将构建好的jar包与Procfile(非必需)打包为支持的压缩包格式。
压缩包下载地址格式要求: http://<web服务URL>/jarDemo.tar.gz
下载地址必须以<压缩包名>.<压缩格式>
结尾。
示例demo程序
示例https://github.com/goodrain/java-jar-demo