0
引言 Thomas Carlyle_“人类是用工L动物。没有工PZ么都不是Q有了工P人无所不能?#8221;金融家们创造了复杂的金融工Pq利用这些工具制造了财富话Q制造了著名的跨国公司,也制造了世界范围的危机。Y件精׃Z让自q工作效率更高Q有更多旉d惛_的事Q也创造了各式各样的工兗持l集成已l不是一个新概念Q在q个概念发展的十多年_出现了支持这一概念的众多工兗这些工Ll合使用Qؓ软g开发提供了强大的支持?/p> 持箋集成工具的分cd功能 一般来_持箋集成工具可以分成两大c:自动化构建工具和构徏计划安排工具?/p> 自动化构建工hq样一些基本功能:代码~译、组件打包、程序执行和文g操作。编译源代码是构建的主要工作之一Qؓ了提高效率,~译应该Ҏ相应的源代码是否发生改变而有条g地执行。组件打包是编译的l果和其他需要包含的文gl织在一P形成可以部v的组件。构建工具应该知道何旉要重新打包。程序执行是指构建工兯够在它支持的q_上,调用所有提供命令行接口的程序。构建工具应该支持创建、拷贝、删除文件和目录{操作?/p> 某些自动化构建工兯有一些扩展功能:执行开发者测试、版本控制工具集成、文集成、部|功能、代码品质分析、支持扩展、多q_构徏、加速构建。虽然构建工具可以通过命o行执行的方式来集成构建工具和试工具Q但如果它提供更直接的集成方式,开发者就更省力。同P如果构徏工具能够直接与版本控制工具集成,开发者也会觉得更方便。文档集成是指构建工兯够自动从源代码中抽取q生成API文。构建工兯可以打包好的组件自动部|到目标试环境中去。构建工具一般通过一些第三方插gQ支持对代码品质q行分析。而提供插件接口,是构建工具实现可扩展性的通用方式。如果您开发的软g需要在多个q_上构建ƈ试Q那么构建工具对多^台的支持׃带来极大的方ѝ对于较大的代码集,一ơ构建可能需要好几个时Q这为持l集成带来了一些挑战。有的构建工h持加速构建,卛_多个构徏服务器的多个处理器上q行分布式构建?/p> 常见的自动化构徏工具包括Ant、NAnt、MSBuild、make、Maven、Rake{?/p> 构徏计划安排工具有这样一些基本功能:构徏执行、版本控刉成、构建工具集成、提供反馈、ؓ构徏打上标签。构划安排工L核心功能是在特定时间执行自动化的构建,q可以通过轮询版本控制库、计划驱动或事g通知{方式来实现。大部分构徏计划安排工具都支持大多数行的版本控制系l,也支持大多数行的构建工兗构划安排工兯支持通过电子邮g提供反馈信息Q有一些工具可以通过x消息、手机短信或其他讑֤来提供反馈。大多数构徏计划安排工具会提供某U类型的升序计数Q作为构建版本的标签?/p> 某些构徏计划安排工具q有一些扩展功能:支持目间依赖关pR提供用L面、制品发布、安全。如果项目间存在依赖关系Q您可能希望在被依赖的项目重新构建时Q重新构Z赖于它的目。设计良好的用户界面会在工作时ؓ您节U时间。制品发布是指除了得到可部v的组件之外,一些成熟的某些构徏计划安排工具可以文档、测试结果、品质分析结构和其他量指标数据格式化,便于查看。有一些工h供了w䆾认证和授权等安全斚w的功能,允许您指定谁能查看结果和修改配置?/p> 常见的构划安排工具包括AnthillPro、Continuum、CruiseControl、CruiseControl.NET、Draco.NET、Luntbuild、Hudson{?/p> 下面介绍两个颇具代表性的工具QAnt和Hudson?/p> Ant Ant是Java构徏工具的事实标准,一般徏议,不论目团队成员使用哪种集成开发环境,目都要有一个可以脱IDE执行的Ant脚本。Ant采用插g式的设计l构Q通过不同的插件来实现各种dQ其d分类如表1所C?/p> Archive Tasks 以上介绍的只是Ant发行版所带的一些Q务。由于Ant采用的是插gl构Q所以开发者可以开发自己需要的AntdQ支持各U工P如FindBugs、TestNG{其他代码检查工具和试工具。早期的Ant没有很好的依赖关pL持,后来则通过Ivy弥补了这一~点?/p> 关键是Ant为我们提供了一个跨q_的Java构徏工具Qؓ持箋集成提供了根本的支持。对于Java开发者来_如果不想采用AntQ也可以考虑采用Maven?/p> Hudson Hudson是一个开放源代码的CI服务器,受到世界各地各种规模和类型的开发团队的Ƣ迎。关键是因ؓ它非常易于安装和使用Q提供了灉|的配|方式和复杂的功能,同时支持Java目和非Java目Q由强大的HudsonC提供技术支持?/p> 而言之,Hudson不仅仅是一个CI服务器,它的可扩展架构它不仅是一个构建管理系l,也成Z个通用的开发生命周期管理系l,让开发者能够完成提升基Uѝ打标签、执行工作流、根据依赖关p追t变更、监视ƈ囄试l果、查看代码覆盖率和违反编码标准的情况{Q务?/p> Hudson是最z跃Q成长最快的开源社Z一Q目前每周下载达4000ơ,有超q?万个在工作的安装实例。它的开发者超q?60人,贡献的工作量过137人年Q目前已发布了超q?00个发行版本。Hudson实际上是现在世界上最受欢q的开源CI服务器?/p> ?是Apache软g基金会运行Hudson的屏q截图,您可以在http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson 看到更多Hudson的用案例?/p> ?. Apacheq行的Hudson Huddon的主要优点包括: 易于安装。只要执?#8220;java –jar hudson.war”Q或者将hudson.war部v到应用服务器上就可以了,不需要其他的安装工作Q也不需要徏立数据库? ?. Hudson支持的分布式构徏 Hudson通过大量的插件来实现其丰富的功能Q这些插件大致可以分Z下几c: SCM。Hudson~省支持CVS和SubversionQ通过安装插g支持Accurev、Bitkeeper、ClearCase、Git、Mercurial、Perforce、StarTeam、Synergy{? ?. Sonar Dashboard l束?/p> 工欲善其事,必先利其器。h是工Ld。A fool with a tool is still a foolQ傻子拿着工具q是dQ。h们L在学习工兗用工兗创造更好的工具Q以期提高工作的效率和品质。h要有智慧Q工兯先进?br /> |
<?xml version="1.0" encoding="UTF-8" ?>
<project name="framework-client" default="sonar" basedir=".">
<property name="project.name" value="framework-client"/>
<property name="src.dir" value="${basedir}/src/main/java" />
<property name="lib.dir" value="${basedir}/lib"/>
<!-- Out-of-the-box those parameters are optional -->
<!-- EXAMPLE FOR MYSQL
<property name="sonar.jdbc.url"
value="jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8" />
<property name="sonar.jdbc.driverClassName" value="com.mysql.jdbc.Driver" />
<property name="sonar.jdbc.username" value="sonar" />
<property name="sonar.jdbc.password" value="sonar" />
-->
<!-- SERVER ON A REMOTE HOST -->
<!--
<property key="sonar.host.url" value="http://myserver:1234" />
-->
<!-- Define the Sonar task if this hasn't been done in a common script -->
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
<classpath>
<pathelement location="${lib.dir}/sonar-ant-task-1.1.jar"/>
</classpath>
</taskdef>
<!-- Add the target -->
<target name="sonar">
<!-- list of mandatories Sonar properties -->
<property name="sonar.sources" value="${src.dir}" />
<property name="sonar.projectKey" value="org.example:${project.name}" />
<!-- list of optional Sonar properties -->
<!--
<property key="sonar.projectName" value="this value overrides the name defined in Ant root node" />
<property key="sonar.binaries" value="list of directories which contain for example the Java bytecode" />
<property key="sonar.tests" value="list of test source directories separated by a comma" />
<property key="sonar.libraries" value="list of paths to libraries separated by a comma (These libraries are for example used by the Sonar Findbugs plugin)" />
-->
<sonar:sonar key="${sonar.projectKey}" version="0.9" xmlns:sonar="antlib:org.sonar.ant"/>
</target>
</project>
5、运行ant脚本Q看到build successfully的提C后Q就可以讉KQ?a href="http://localhost:9000/">http://localhost:9000/来查看代码质量审查结果了?br />
上述是用Sonar和ant最单的步骤Q用了Sonar自带的嵌入式数据库DerbyQ以及standalone的应用服务器Q当然也支持使用其它数据库,比如QmysqlQ只要修改一下sonar.properties的配|文Ӟ以及在ant脚本中配|一下连接数据库的方式。另外也可以使用tomcat、jboss{应用服务器来发布Sonar应用Q只要运行一下Sonar自带的一个脚本:build-war.bat可以了Q这里不再详q?br />