我们公司现在的开发环境是这样的,在本地开发完一个新的功能,测试无误直接上传到SVN;接下来就是将这次开发的功能从界面到后面理一遍,理清晰了就开始一点点的复制到服务器上的IDE中编译和发布。
上面的情况已经很繁琐了,下面这种情况会更糟糕。上线的系统,后期维护中会对很多功能进行完善,系统也会有周期性的测试。我们公司就是这样的,公司每个组都有测试人员,同时会请第三方公司测试。问题来了,在哪里做测试呢?每次都需要临时搭建一个测试环境,供测试人员测试。
步骤:
a.测试人员将提出的bug交给开发人员
b.开发人员根据测试文档(很多bug)完善代码
c.将完善好的代码在本地编译无误后,复制到测试环境的IDE上编译,重启服务器
d.将修改成果交给测试人员查看
e.测试人员验证通过后将修改过的代码复制到生产环境上编译,重启服务器
有多少bug,就需要将上面5个步骤循环多少次,直到所有bug解决,测试完成。最终我们想要达到的目的是测试完成后测试环境和生产环境的代码一致。往往会出现这样和那样的不一致,这就导致下次测试还会出现以前的bug,周而复始修改bug的开发人员不愿修改了,因为全是以前的问题(改一个bug需要改把本地、SVN、生产、测试代码都改了,不经意间就会漏掉一个地方)。测试人员的积极性也会降低,每次测试几百个bug,下次来还是这几百个。
出现这种情况的原因:
开发人员需要维护SVN、本地、生产环境、测试环境代码,不可以很好的兼顾,造成代码不一致。怎样去管理这些代码呢?——用集成框架应对这种情况
搭建框架——Jenknis+Ant+SVN+Tomact
第一步:开发人员只需要将自己修改的代码提交到SVN
第二步:在jenknis构建或者自动构建即可。
施工大大减少了劳动力,提高了开发效率。
注:
SVN中包含编译时需要的Build.xml文件
Jenknis集成了ANT,只需要相应的设置即可
开发工具
1、安装JDK(1.7版本以上,原因见最下面——问题详解)
环境变量:
Java_HOME:jdk1.7.0_67
path: “.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”
检测是否安装成功:
命令:java –version
2、Tomact安装
环境变量:
新添:CATALINA_HOME :G:\tieServer\apache-tomcat-6.0.14
修改:path:;%CATALINA_HOME%\bin;
Tomact服务:
创建:
命令窗口:service.bat install
将tomcat服务启动改为自动,并设置为启动状态
扩大Tomcat服务内存,而不是Tomcat内存(在这里Tomcat被注册为一种服务)
tomcat为我们提供了一个设置启动参数的窗体,双击tomcat_home/bin目录下的tomcat7w.exe,如图
1、添加参数
2、增大内存
Initial memory pool:初始化的Java虚拟机内存大小,
Maxinum memory pool: Java虚拟机可使用的最大内存,
注:删除服务:
方式一:service.batremove(必须先保证服务安装时配置的Tomcat环境变量正常,否则无法删除)
方式二:sc deleteTomcat**(直接删除服务,没有限制条件)
3、安装Ant
环境变量:
ANT_HOME: G:\ant\apache-ant-1.9.6
path:;%ANT_HOME%\bin;
检测:
ant –version
路径修改
Build.xml:
设置Tomact服务器路径
设置Ant安装路径
注:
解压后Ant包需要四个jar包,因为使用jdt进行编译,需要拷贝下面这些jar包到ant_home/lib
org.eclipse.jdt.compiler.tool_1.0.100.v_972_R35x.jar
org.eclipse.jdt.core_3.5.2.v_981_R35x.jar
org.eclipse.jdt.debug.ui_3.4.1.v20090811_r351.jar
jdtCompilerAdapter.jar
在org.eclipse.jdt.core_3.5.2.v_981_R35x.jar里面找到jdtCompilerAdapter.
否则会出现以下错误:
Class not found: org.eclipse.jdt.core.JDTCompilerAdapter
4、安装Jenknis
先修改端口,防止冲突:
C:\Program Files (x86)\Jenkins 修改:Jenkins.xml
注:修改完成后重启jenknis服务
(1)新建项目
(2)项目配置
配置SVN地址
构建过程
(3)系统配置
配置JDK
配置Ant
(4)构建
编译结果:
构建顺序:
控制台输出:
问题详解
1、jdk版本需要提升到1.7以上
项目中使用到了Swicth(String)
在JDK1.6的版本中,switch后面的括号里面只能放int类型的值,注意是只能放int类型,但是放byte,short,char类型的也可以。是因为byte,short,shar可以自动提升(自动类型转换)为int,不能放long型和String型。
而在JDK1.7的版本中,switch中可以使用字串String。但仍不支持long型。
问题:即使JDK的版本为1.7,在myeclipse 也提示switch不能支持string。
应该是你的编译器版本还没改过来,在eclipse里面window->preferences->java,complier版本改成1.7就行了。如下图:
以前也使用过jenknis,现在想想当时只是简单的会用,其实很多东西都不是很清晰,只有自己去实践了,才会思考的多,遇到的问题也多,在错误中成长,你才会更深入。