云帮可以将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运行时环境

组件支持的版本默认值
JDK1.6, 1.7, 1.81.8
MAVEN3.0.5, 3.1.1, 3.2.5,3.3.13.3.1
TOMCAT6.0.41, 7.0.56, 8.0.147.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

  1. java.runtime.version=1.8

2.2 配置Maven

您可以通过设定 maven.versionsystem.properties 中指定一个Maven版本:

copy



# icon/buttons/copy

  1. maven.version=3.3.1

如果此条属性被定义,mvnw 脚本将会被忽略.

兼容的maven版本为 3.0.53.1.13.2.53.3.13.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

  1. ...
  2. ...
  3. <packaging>war</packaging>
  4. ...
  5. ...

3.2 自动构建

平台检测为java-maven项目后,会自动通过mvn命令进行构建操作,具体的构建命令为:

copy



# icon/buttons/copy

  1. 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

  1. 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

  1. 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

  1. web: java $JAVA_OPTS -jar demo.jar

完成后,通过源码构建即可。

五、相关文章