云帮可以将java程序轻松部署到平台,并提供灵活伸缩的高可用特性。您可以部署标准的基于Tomcat或Jetty的web应用,同时也支持Spring、Play等框架构建的应用程序。我们致力于在不改变开发习惯情况下将您的java应用在云端快速部署、运行、灵活伸缩!
一、代码识别
云帮支持部署Maven源码、jar包、war包项目.
1.1 Maven源码项目
云帮支持的java应用程序默认构建系统是Maven。Maven项目通过pom.xml
文件来进行项目的依赖管理,云帮也通过pom.xml
来检测出项目的语言类型。若您提交的源码根目录中包含文件pom.xml
,则识别该项目为源码项目,由于项目需要使用maven管理,Rainbond称其为Java-maven。
1.2 War包
若您将您的代码打包为War包,您需要将您的War包存放至所提交文件目录的根目录下,云帮会检测根目录中是否存在<文件名>.war
,若存在则识别该项目为war包项目,Rainbond称其为 Java-war。
1.3 Jar包
若您将您的代码打包为Jar包,您需要将您的Jar包存放至所提交文件目录的根目录下;在根目录下创建LANGUAGE
文件,写入内容java-jar
。两个条件都满足的情况下,识别为Jar包项目。Rainbond称其为 Java-jar。
提示:
当上述情况同时存在时,Rainobnd识别代码的优先级为:Maven源码项目 > War包 > Jar包
二、Java运行时环境
组件 | 支持的版本 | 默认值 |
---|---|---|
JDK | 1.6, 1.7, 1.8 | 1.8 |
MAVEN | 3.0.5, 3.1.1, 3.2.5,3.3.1 | 3.3.1 |
TOMCAT | 6.0.41, 7.0.56, 8.0.14 | 7.0.56 |
以上各组件,您可以在平台创建应用的向导中选择,也可以自行配置支持的版本:
提示:
Rainbond默认提供的JDK为OpenJDK,如果需要使用OracleJDK,请自行使用Dockerfile指定。
2.1 配置JDK
云帮支持的JDK版本值为 1.6
,1.7
, 1.8
,默认的版本为 1.8
,若您未指定JDK版本,云帮会帮您自动安装jdk1.8
。您也可以向所提交代码的根目录中添加 system.properties
文件,通过设定java.runtime.version
来指定一个Java版本:
copy
# icon/buttons/copy
java.runtime.version=1.8
2.2 配置Maven
您可以通过设定 maven.version
在system.properties
中指定一个Maven版本:
copy
# icon/buttons/copy
maven.version=3.3.1
如果此条属性被定义,mvnw
脚本将会被忽略.
兼容的maven版本为 3.0.5
、 3.1.1
、 3.2.5
、 3.3.1
、3.3.9
。若未指定版本,默认版本为3.3.1
。如果您当前正在使用maven3.0.5
并希望升级到最新版本,那么您必须创建 system.properties
并指定版本。
三、示例:基于Maven构建应用
云帮通过 maven 对包含 pom.xml
文件的 java项目进行构建,最终根据 pom.xml
中的打包需求生成 jar
包 或者 war
包。
本文以好雨官方 java-maven-demo 为示例进行说明。
3.1 打包
云帮检测出项目为maven项目后,在构建阶段会将代码打包,在pom.xml
文件中示例程序将编译后的文件打包为war包。
pom.xml
copy
# icon/buttons/copy
...
...
<packaging>war</packaging>
...
...
3.2 自动构建
平台检测为java-maven项目后,会自动通过mvn命令进行构建操作,具体的构建命令为:
copy
# icon/buttons/copy
mvn -B -DskipTests=true -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true clean install
提示:
后续版本会引入自定义maven构建命令的功能。
3.3 应用运行
平台默认通过 webapp-runner.jar 将打包的 war
包运行起来,类似如下命令:
copy
# icon/buttons/copy
java $JAVA_OPTS -jar /opt/webapp-runner.jar --port $PORT target/*.war
提示:
- JAVA_OPTS : 平台会根据应用的内存大小,自动设置Xmx和Xms的值
- PORT : 默认监听端口为 5000
3.4 自定义运行命令
用户可以通过在代码根目录创建 Procfile 文件并编辑该文件,实现自定义运行命令:
copy
# icon/buttons/copy
web: java $JAVA_OPTS -jar target/*.jar
注意:
自定义启动命令时需要注意Procfile文件的格式:
- 必须以
web:
开头 - 文件结尾不能包含特殊字符
本文示范demo源码:java-maven-demo
四、示例:部署war/jar包
Rainbond为了让您更方便的部署项目,特推出识可别 War包 、Jar包 的构建模式,云帮分别称为Java-war与Java-jar。上文提到了 War包 与 Jar包 的代码识别方式及构建环境。
示例代码:
- java-war-demo 请忽略代码中的源码目录
src
,您需要的只是war包和自定义的system.properties
配置文件。 - java-jar-demo
4.1 部署war包
WAR文件是JAR文件的一种,其中包含JSP、Java Servlet、Java类、XML文件、标签库、静态网页(HTML和相关文件),以及构成Web应用程序的其他资源,它的扩展名为.war
。云帮平台支持WAR文件运行。
在代码根目录上传好War包后,通过源码构建即可。
4.2 部署jar包
在代码根目录上传好Jar包后,通过创建Procfile
来指定运行命令。比如在您正常部署的时候,使用java -jar demo.jar
的命令来运行,那么在Procfile
中定义如下:
copy
# icon/buttons/copy
web: java $JAVA_OPTS -jar demo.jar
完成后,通过源码构建即可。