开发步骤
本节将详细介绍开发者基于ablecloud提供的服务框架,快速开发自定义后端服务(UDS)和云端定时任务的流程:两者的开发流程是完全一致的。通过本节,你将掌握利用ablecloud框架进行开发环境搭建、单元测试、集成测试以及服务发布等知识。
服务框架发布库
ablecloud一期发布java版本服务开发框架,其发布目录、文件如下所示
/config
/cloudservice-conf.xml
/lib
/ablecloud-framework-1.0.0.jar
/commons-collections-3.2.1.jar
/commons-configuration-1.10.jar
/commons-lang-2.6.jar
/slf4j-api-1.7.7.jar
/...
start.sh
start.cmd
注:所有依赖的第三方jar包,均放在lib文件夹下。其核心jar包为ablecloud的服务框架ablecloud-framework-1.0.0.jar。各jar包版本根据ablecloud发行的大版本不同可能不同。
在开发者开发完自定义服务后,需要将自定义服务编译好的jar包也放到ablecloud发布库的lib文件夹下。
本地启动命令
开发者写好服务后,可在本机启动服务进行测试集成或功能测试。
linux下在终端运行如下命令启动服务进行测试:
sh start.sh -m test
windows下在cmd中运行如下命令启动服务进行测试:
start.cmd -m test
注:启动时的参数"-m test"用于测试环境,所依赖的配置项如域名/版本等信息从config目录下的cloudservice-conf.xml配置文件中读取,开发者可以修改配置文件中的内容以适应测试环境。正式线上环境,开发者不用关心配置文件以及配置项,域名/版本等所有的信息均由框架自动获取并填充。
开发环境设置
系统准备
在进行开发前,需要对系统以及环境进行设置。目前框架只支持java语言,因此系统准备基本都是和java相关,如jdk、maven等。
-
JDK
安装JDK,建议采用1.7版本JDK
-
maven
安装maven,建议采用3.2以上版本
-
ablecloud
下载ablecloud开发框架并解压
Intellij
-
新建工程
选择新建maven工程,JDK选择正确的版本。
选择maven工程
注意jdk版本选择安装的1.7+ 点击next即可。
进入下一个页面,根据情况填写groupid/artifactid/version等信息。
填好后点击next,进入下一步,填写工程名以及存放路径。
然后点击finish完成新建工程向导。
至此,新建工程完成。
-
设置工程
按照步骤1完成了工程的新建,还需对工程属性进行一些设置以方便后续的编译、单测。 点击File -> Project Structure...
首先设置工程所使用的JDK版本1.7+和语言级别7.0
设置开发服务所要依赖的ablecloud框架包,点击+号,选择下载并解压后的ablecloud开发框架的lib目录即可。 同上,打开Project Structure...,然后选择Libraries,点击右边的+号,选择Java,如下图所示
在弹出的对话框中选择下载并解压后的ablecloud中的lib目录,并点击OK
回到上一个窗口后再次点击OK确认
这个过程中,我们可以对添加的lib库重命名(可选),例如这里重命名为ablecloud-libs。点击OK完成添加。
完成上述步骤后,我们将在工程视图里面看到新添加的该目录,如下
)
至此,开发者开发服务所以来的ablecloud开发框架库添加成功。
-
修改pom.xml文件
下面是一个demo的完整pom.xml文件,如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ablecloud.demo</groupId> <artifactId>SmartHome</artifactId> <version>1.0.0</version> <properties> <ablecloud.lib.dir>/home/chenpeng/IdeaProjects/ablecloud-framework/target/lib</ablecloud.lib.dir> </properties> <build> <plugins> <plugin> <!--this plugin and dependency jars are used for testing--> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18.1</version> <dependencies> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit47</artifactId> <version>2.18.1</version> </dependency> </dependencies> <configuration> <argLine>-Dmode=test</argLine> <additionalClasspathElements> <additionalClasspathElement>${ablecloud.lib.dir}/ablecloud-framework-1.0.0.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/slf4j-log4j12-1.7.7.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/slf4j-api-1.7.7.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/log4j-1.2.17.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/junit-4.11.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/hamcrest-core-1.3.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/commons-configuration-1.10.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/commons-collections-3.2.1.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/commons-lang-2.6.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/commons-logging-1.1.1.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/jetty-all-9.2.10.v20150310.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/jackson-core-2.3.2.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/jackson-annotations-2.3.2.jar</additionalClasspathElement> <additionalClasspathElement>${ablecloud.lib.dir}/jackson-databind-2.3.2.jar</additionalClasspathElement> </additionalClasspathElements> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> <compilerArguments> <extdirs>${ablecloud.lib.dir}</extdirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </plugin> </plugins> </build> </project>
完整拷贝该示例pom.xml文件内容,其中绝大部分内容都无须修改,开发者仅需修改如下几个配置项即可:
<project> <groupId>your service group id</groupId> <artifactId>your service artifact id</artifactId> <version>your service version</version> <properties> <ablecloud.lib.dir>unzipped ablecloud lib dir where you put</ablecloud.lib.dir> </properties> </project>
注意以下配置项一定不能修改,否则单测将无法通过。开发者不用担心该配置项,线上环境该配置项自动失效。
-Dmode=test -
修改配置文件
配置文件位于ablecloud发行库的config文件夹下,名字为cloudservice-conf.xml。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <developer> <id>4</id> </developer> <authentication> <access-key>33df24a54054067e80af49d939b429c2</access-key> <secret-key>5e2fec3440e23c5e807910b13b672015</secret-key> <timeout>5000</timeout> </authentication> <framework> <router>192.168.1.126:5000</router> </framework> <service> <name>SmartHome</name> <class>com.ablecloud.demo.DemoService</class> <port>1234</port> <major-domain>ablecloud</major-domain> <sub-domain>demo</sub-domain> <major-version>1</major-version> <minor-version>0</minor-version> <patch-version>0</patch-version> </service> </configuration>
注:开发者id,access-key,secret-key等信息,均能通过登录ablecloud测试环境的web console获取。 除了service.class配置项在测试环境和线上环境均生效外,所有的其它配置项只在测试环境有效。线上服务将忽略配置文件中的配置项。
-
编译单测
在IDE的终端(terminal)或系统终端中运行命令
mvn package
即可完整的执行编译、单元测试(如果写了单测代码的话)。 -
本地运行
如果编译、单测都没有问题,则将编译出来的服务jar包(在服务工程主目录下的target/lib目录下)拷贝到ablecloud框架的lib目录下,在ablecloud的框架主目录执行ablecloud提供的脚本
sh start.sh -m test
或start.cmd -m test
,即可在您的开发机上启动您编写好的服务程序。注:在本机上运行服务测试时必须加-m test参数,否则无法启动服务。服务启动所需的参数,如域名、版本、端口等信息均在xml的配置文件中设置。
-
提交到平台
将你编译好的服务jar包(位于你服务代码主目录下的target/lib文件夹中,如
~/SmartHome/target/lib/SmartHome-1.0.0.jar
)放入ablecloud框架的lib目录下,然后将ablecloud的config目录、lib目录、start.sh打成zip包,通过ablecloud的web平台提交。
Eclipse
-
新建工程
选择File-->New-->Project...
选择maven工程
点击Next进入下一步
填写groupId,artifactId,version等信息,并点击Finish完成新建工程。
-
设置工程 在工程视窗右键点击步骤1中新建的工程进行工程设置。或者点击菜单栏Project-->Properties进行设置
首先设置工程对ablecloud发行库的依赖。如图选择Java Build Path的Libaries标签页,点击Add Library...
在Add Library页选择User Library
继续点击User Libraries...按钮
然后点击New...新建一个用户library文件夹
这里可以给该用户lib重命名,如图中命名为ablecloud-libs,点击OK完成
回到User Libraries页面,点击右方的Add External JARs...按钮,选择下载并解压的ablecloud发行库中的lib目录,将该目录中所有的jars添加到新建的user library中。
勾选上新建的user library,并点击Finish将ablecloud的jars添加到新建的工程中。
下面进行java语言的设置,类似上面的设置,先进入Properties窗口,选择Java Compiler,去掉默认的Use compliance from execution environment...,并且选择Compiler compliance level为1.7
-
修改pom.xml文件
同intellij章节
-
修改配置文件
同intellij章节
-
编译单测
TBD
-
本地运行
同intellij章节
-
提交到平台
同intellij章节