对maven的介绍和使用在上周写的几篇文章中都有详细的介绍,这里不再赘余了。这里重点谈下SubVersion(SVN)和CruiseControl(CC)在持续集成中的使用。(老鸟请飞过
…)
先谈下持续集成。在没有应用持续集成之前,传统的开发模式是项目一开始就划分模块,然后等所有的代码都开发完成之后再集成到一起进行测试,随着软件技术的
发展,各种软件方法百花齐放,软件规模也在扩大,软件需求越来越复杂,软件已经不能简单地通过划分模块的方式来开发,需要项目内部互相合作,划分模块这种
传统的模式的弊端也越来越明显,由于很多 bug 在项目的早期就存在,到最后集成的时候才发现问题,开发者需要在集成阶段花费大量的时间来寻找 bug
的根源,加上软件的复杂性,问题的根源很难定位,甚至出现不得不调整底层架构的情况。
持续集成最大的优点是可以避免这种传统模式在集成阶段的除虫会议。持续集成主张项目的开发人员频繁的将他们对源码的修改提交(check in)到一个单一的源码库,并验证这些改变是否对项目带来了破坏,持续集成包括以下几大要点:
1,访问单一源码库,将所有的源代码保存在单一的地点(源码控制系统), 让所有人都能从这里获取最新的源代码(以及以前的版本)。
2 支持自动化创建脚本,使 创建过程完全自动化,让任何人都可以只输入一条命令就完成系统的创建。
3 测试完全自动化,要求开发人员提供自测试的代码,让任何人都可以只输入一条命令就运行一套完整的系统测试。
4 提供主创建,让任何人都可以只输入一条命令就可以开始主创建。
5 提倡开发人员频繁的提交(check in)修改过的代码。
持续集成的关键是完全的自动化,读取源代码、编译、连接、测试,整个创建过程都应该自动完成。对于一次成功的创建,要求在这个自动化过程中的每一步都不能出错,而最重要的一步是测试,只有最后通过测试的创建才是成功的创建。
CruiseControl 是一种持续集成过程的框架,包括了邮件通知、旺旺提醒(淘宝内部)、ant、maven和各种源码控制工具cvs、svn的插件,并提供了 web 接口,用于查看当前和以前的创建的结果。
Svn包的下载http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100
,目前最高版本为svn-win32-1.5.5.zip,下载后解压并将bin目录配置到环境变量里,如:Path=D:dev filessvn-win32-1.5.5bin
检验配置正确与否:在控制台下输入命令 svn help,若出现帮助信息则表示配置成功。
可以去官网下载TortoiseSVN:http://tortoisesvn.net/downloads
,目前版本win32-svn-1.5.6.msi,下载后安装。
可以去官网下载CC:http://cruisecontrol.sourceforge.net/download.html
目前的版本是2.8.2,下载后安装。
- 四, eclipse中的subversion的安装:
启动eclipse,选择help->software updates->Available software->add site->输入http://subclipse.tigris.org/update_1.4.x/
,然后选中并Install,安装完后重启,在项目名右键将会看到svn插件的相关功能菜单,如team等。
如果上面的安装都已完成,下面将结合一个实例将一个项目集成在cc环境中。
- 1, 建立版本库。在你选定的目录空白处右键->TortoiseSVN->Create Repository here…”, 然后可以选择版本库模式, 使用默认即可, 然后就创建了一系列目录和文件,如D:SVN_repository。
- 2, 配置用户和权限。进入版本库里conf文件夹,先修改svnserve.conf文件里# password-db = passwd为password-db = passwd,使用权限保护,同时修改passwd文件里
# [users]
# harry = harryssecret
# sally = sallyssecret
修改为:
[users]
harry = harryssecret
sally = sallyssecret ,或者设置你自己的用户名和密码,如guangyuan = guangyuan
- 3, 建立分支trunk。在命令行中输入svnserve -d -r D:SVN_repository启动SVN服务器,不要关闭命令行窗口,关闭窗口也会把svnserve停止
。在地址栏输入svn://localhost/后回车,将会出现:
在文件夹下创建自己的分支目录。
- 4, 将项目导入到SVN库中。为了简单起见,我用maven构建了一个最原始的five-stone项目:
mvn archetype:create -DgroupId=com.taobao.mytest -DartifactId=fives-tone
mvn -U clean eclipse:clean eclipse:eclipse
然后在项目目录的空白处右键-> TortoiseSVN->import,然后选择你的分支url,确定即可导入到版本库中。
- 5, 将项目集成到CC环境中。在CruiseControl安装目录下的projects目录空白处右键->SVN CheckOut,选择刚才的项目分支URL即可checkout five-stone项目代码。
编辑config.xml:
为了让配置文件对中文支持,先在第一行增加
<?xml version=”1.0″ encoding=”UTF-8″?>
<!-旺旺消息提醒成功与否的插件,–>
<plugin name=
”wangwangCCPlugin” classname=”com.taobao.util.cctool.WangwangPublisher”
ccUrl=”http://localhost:8080/cruisecontrol/buildresults/${project.name}”>
</plugin>
<project name=”fives-tone”>
<listeners>
<currentbuildstatuslistener file=”logs/${project.name}/status.txt”/>
</listeners>
<bootstrappers>
<svnbootstrapper localWorkingCopy=”projects/${project.name}” />
</bootstrappers>
<modificationset quietperiod=”30″>
<svn localWorkingCopy=”projects/${project.name}”/>
</modificationset>
<schedule interval=”300″>
<maven2 mvnscript=
“D:/dev files/apache-maven-2.0.9-bin/apache-maven-2.0.9/bin/mvn.bat”
pomfile=”projects/${project.name}/pom.xml”
goal=”-U clean test” />
</schedule>
<log >
<merge dir=”projects/${project.name}/target/test-results”/>
</log>
<publishers>
<onsuccess>
<artifactspublisher dest=”artifacts/${project.name}”
file=”projects/${project.name}/target/${project.name}.jar”/>
<wangwangCCPlugin>
<always nickname=”光远” />
</wangwangCCPlugin>
</onsuccess>
</publishers>
</project>
- 6, CC创建项目。启动cruisecontrol.bat,将会自动构建five-stone项目并生成相关的日志记录。访问http://localhost:8080/cruisecontrol/
会
看到CC的首页面,页面说明了项目构建的时间、是否成功和构建的标号。还可以通过手动点击Build按钮让CC立即执行构建任务。否则CC会等待下一次构
建时间(在config.xml中,schedule的属性interval的值以秒为单位设定构建执行的间隔时间,默认为5分钟)
点击 项目名可以查看项目构建细节。旺旺消息通知结果的插件是宋缺结合CC的源码开发出来的一个插件,它会在项目构建完后通过旺旺消息将构建结果发送到指定的人,便于及时的跟进。关于CC的config.xml里的其他配置,有兴趣的可以继续研究,这里不做细节介绍。
- 7,
测试。先模拟客户端的操作将项目checkout出来,结合maven命令构建后导入到eclipse环境,进入AppTest.java里将代码
assertTrue(true)改为assertTrue(false),然后保存,右键->team->提交。进入CC页面http://localhost:8080/cruisecontrol/
,重新build该项目,当项目构建完后,你将收到旺旺提醒的构建结果错误的提示。
以上,谢谢!
VN:F [1.9.6_1107]
转载务必注明出处Taobao QA Team
分享到:
相关推荐
先别下载,可以直接看博文,里面都有贴详细代码。 https://mp.csdn.net/postedit/79952532 Eclipse+Maven+Spring MVC,demo版,测试可以正常运行。
标题 "eclipse+ssm+maven最基本的demo含文档说明" 提供了关于一个基于Java Web开发的项目模板,其中整合了Eclipse IDE、Spring、Struts2和MyBatis(SSM)框架,并使用Maven作为构建工具。这个项目不仅包含源代码,还...
本教程将深入探讨如何使用Eclipse集成开发环境(IDE)、Maven项目管理和构建工具,以及Jetty轻量级服务器来搭建一个完整的Java Web开发环境。以下是详细步骤和相关知识点: 1. **Eclipse IDE**: Eclipse 是一个开源...
Web项目中基于Maven与Spring整合的WebService之cxf的实现⬇️ 详情请参考如下链接: https://locqi.github.io/locqi.com/2018/09/05/Eclipse+Maven+Spring+CXF-create-WebService/
本教程将详细介绍如何在Windows、Mac或Linux系统上搭建一个基于Java 8的Eclipse IDE开发环境,并结合Maven进行项目管理。 首先,我们需要安装Java Development Kit (JDK)。Java 8是开发环境的基础,提供了Java...
"eclipse+maven+ssh"就是一个常见的组合,其中eclipse是Java开发的集成开发环境,maven是项目管理和构建工具,而ssh则是三个流行框架的简称,包括Spring、SpringMVC和Hibernate。下面我们将详细探讨这些知识点。 1....
Eclipse+Maven+SSM整合 参考 https://blog.csdn.net/Code__rookie/article/details/101782626 详细步骤 https://blog.csdn.net/rebornsgundam/article/details/106070863
1、Testng+selenium+Maven+WebDriver+Java+eclipse 实现禅道登录,百度搜索。 2、eclipse需安装Testng+selenium+Maven 3、下载对应版本的WebDriver驱动。Chrome驱动下载地址...
公司框架是SSH,hibernate用的越来越少,做了几年后,也懒得用了,springjdbc玩到现在,maven,mybatis没用到一直都没去接触,感慨现在技术真是发展越来越快,有点落伍了,最近刚好私下接了个小项目,心想何不用maven...
eclipse+maven+springmvc简单实例
总结来说,Eclipse+Maven+SSM搭建是一个常见的Java Web项目开发流程,它结合了强大的IDE、高效的构建工具和灵活的框架,为开发者提供了一套高效、便捷的开发环境。通过学习这个搭建过程,开发者不仅能掌握基本的项目...
【标题】"eclipse+maven+springmvc+spring+mybatis案例附带mysql数据库"是一个典型的Java Web开发项目,它涵盖了多个关键的技术栈,包括Eclipse IDE、Maven构建工具、Spring MVC作为MVC框架、Spring核心框架以及...
本项目"eclipse+Maven+SpringMVC框架的开发项目基础"旨在提供一个集成的开发环境,帮助初学者快速上手SSM(Spring、SpringMVC、MyBatis)框架的实践。 首先,Eclipse是一款强大的Java集成开发环境(IDE),它提供了...
### Eclipse + Maven + Tomcat 集成 ...Maven的依赖管理功能极大地减轻了开发人员的工作负担,使得团队能够更加专注于业务逻辑的开发。同时,Eclipse与Tomcat的集成使得项目的调试和测试变得更加便捷高效。
这个“eclipse+maven+struts2简单例子”着重展示了如何结合这三个工具创建一个基础的Java Web项目。接下来,我们将深入探讨这些知识点。 首先,Eclipse是一款流行的Java集成开发环境(IDE),提供了丰富的功能来...
标题与描述概述的知识点主要涉及了使用CruiseControl与Maven2进行持续集成的配置...通过上述步骤,我们可以完成CruiseControl与Maven2的集成配置,实现自动化构建、测试和部署的持续集成流程,提高开发效率和软件质量。
2.Eclipse安装图解 3.Tomcat7安装图解 4.maven安装详解 5.JDK1.7意见安装版下载分享链接(文件大,超过上传限制特地百度云分享) (备注:以上安装文件除了jdk1.7是我以前不知从哪下载的,其他工具的安装文件都...