摘要:持续集成引擎Hudson Hudson 是一个可扩展的持续集成引擎。主要用于:1.持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。2.监控一些定时执行的任务。Hudson拥有的特性包括: 易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。 易于配置-所有配置都是通过其提供的web界面实现。 集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。 生成JUnit/TestNG测试报告。 分布式构建支持-Hudson能够让多台计算机一起构建/测试。...
阅读全文
随笔分类 - 项目管理
摘要:摘要:本篇文章继续讲述在Eclipse中使用JUnit4进行单元测试。上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@After,我们来看看他们是否适合完成如下功能:有一个类是负责对大文件(超过500兆)进行读写,他的每一个方法都是对文件进行操作。换句话说,在调用每一个方法之前,我们都要打开一个大文件并读入文件内容,这绝对是一个非常耗费时间的操作。如果我们使用@Before和@After,那么每次测试都要读取一次文件,效率及其低下。这里我们所希望的是在所有测试一开始读一次文件,所有测试结束之后释放文件,而不是每次测试都读文件。JUnit的作者显然也考虑到了这个问题,它给出
阅读全文
摘要:摘要:本篇文章继续讲述在Eclipse中使用JUnit4进行单元测试。 在测试类中用到了JUnit4框架,自然要把相应地Package包含进来。最主要地一个Package就是org.junit.*。把它包含进来之后,绝大部分功能就有了。还有一句话也非常地重要“import static org.junit.Assert.*;”,我们在测试的时候使用的一系列assertEquals方法就来自这个包。大家注意一下,这是一个静态包含(static),是JDK5中新增添的一个功能。也就是说,assertEquals是Assert类中的一系列的静态方法,一般的使用方式是Assert. assertEq.
阅读全文
摘要:摘要:本篇文章讲述在Eclipse中使用JUnit4进行单元测试。 首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些Bug用于演示,这些Bug在注释中都有说明。该类代码如下:package andycpp;public class Calculator ...{private static int result; //静态变量,用于存储运行结果publ..
阅读全文
摘要:有两种方案:* VisualSVN Server,安装更简单、更直观:http://www.visualsvn.com/server/download/* 传统的Subversion 服务器程序:一、准备工作1、获取 Subversion 服务器程序到官方网站(http://subversion.tigris.org/)下载最新的服务器安装程序。目前最新的是1.5版本,具体下载地址在:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID
阅读全文
摘要:Svn是一个开源的版本控制系统Subversion的简称。Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。SVN版本控制需要SVN服务器(可下载SVN安装或安装VisualSVN Server)和SVN客户端软件(Subclipse即Eclipse的SVN客户端插件或者TortoiseSVN)。TortoiseSVN使用帮助和下载http://www.williamlong.info/archives/1
阅读全文
摘要:SVN是常用的一种常见的版本控制软件。SVN中检出(check out) 和 导出(export) 的区别主要有如下几条:check out跟check in对应,export跟import对应。check out导出获得文件后,导出的文件仍处于SVN版本控制中,与版本库保持关联,比如你可以进行Svn Update或者Svn Commit操作。同时导出文件夹下有一个.svn的隐藏文件夹,存储着一些版本的元数据信息。export 简单导出一个版本的数据,导出的文件脱离SVN版本控制,修改后无进行Update和Commit操作。导出文件夹下没有.svn目录。
阅读全文
摘要:关于SVNSvn是什么?Svn官方网站;Svn客户端;Svn在线视频帮助。Subversion是什么?SVN是一种版本管理系统,前身是CVS,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会出现混乱的情况,版本管理系统就是为了解决这些问题。Subversion能做什么?SVN像时光机器一样,可以让你回到过去。因此凡是你认为可能需要恢复以前样子的工作都可以用SVN来管理。比如程序员编程、美工做图、翻译、异地监控工作进度,可以说SVN不仅在软件工程领域发挥重大作用,在其他行业也用重要用途。例如两个人合作翻译一本书、几个人设计一个工程图纸,svn不仅可以让你的工作恢复以前的状
阅读全文
摘要:Nexus简介Nexus是Sonatype推出的强大Maven仓库管理器产品,要比以前TSS上介绍的Artifactory要好使用的多,也是一个拆箱即用的Java App,内嵌Jetty容器和Java Wrapper做Windows服务,安装简单到解压然后双击install即可。更详细的帮助手册请上官方网站查看,这里推荐一个翻译中的书籍——《Maven权威指南》(在线阅读英文版,中文版),一本全面介绍Maven的书,其中也有介绍Nexus的章节,猛击这。Nexus的优点这里得啰嗦一下(摘抄自Maven中文Blog):代理远程仓库。配置Nexus代理中央仓库,其它任何公开的Maven仓库,将你组
阅读全文
摘要:一个团队要真正用好Maven,repository私服是免不了的,否则team mate们多好奇的目光,都会全部消耗在漫长的jar下载中。 以前介绍过一个搭建私服的简朴但很笨的办法--将雷锋同志下载好的.m2/repository目录整个上传到任意的Web服务器中。其实世上多的是专业的maven私服搭建器,见TheServiceSide的文章--Setting Up a Maven Repository。 我用的是Artifactory,忽然间觉得,Java的服务应用啥时候终于变得这么好用了,什么都不用装,不用配,双击artifactory.bat,自己就会启动Jetty Web服务器,典型的
阅读全文
摘要:今天在创建一个新的Maven项目时,在其中添加了很多依赖。刚开始为了避免错误就每添加一次,保存一下,Eclipse就会下载相应的包。最后为了加快速度就把剩下的包全部添加了,再次保存就出现了Missing artifact错误,就连以前正常的包也出现了这个问题。 于是一个个删除新添加的依赖,当删除了一个叫做quartz-all的依赖后,一切都正常了。然后把其他依赖都添加上,也是正常的。于是去本地的repository查看quartz-all的详细信息,发现里面只有一个quartz-all.jar,而其他目录同时还包含一个相应的pom文件。初步判定是这里的问题。然后去远程的仓库查看,也没有pom.
阅读全文
摘要:在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包放在外部是不合适的。另外,由于项目一直在开发中,这些内部的依赖可能也在不断的更新。可以通过搭建公司内部的Maven服务器,将第三方和内部的依赖统一管理。这里使用Nexus来搭建本地的Maven服务器,过程比较简单。一、安装服务器1、下载我们可以在nexus的官网上找到它的相关介绍,下载地址是:http://nexus.sonatype.org/downloads/,在这里可以找到最新的版本,如果需要以前的版本,在官网上应该也可以找到下载地址。我下载的是:nexus-oss-webapp-1.8.0-bundle.tar.gz。关于.
阅读全文
摘要:(接上篇)在新创建了项目之后,可以看到目录结构: 从图中可以看出,Maven自动将项目源文件和测试用例分别放到了不同的目录下,但是却使用了相同的包名。这样生成可执行的产品时,就比较容易将产品代码和测试代码隔离开;同时测试用例也可以直接引用同一包中被测试的类,既符合了JUnit的规范,也使程序更易读。 正如上图中标示,新建项目的JRE默认为J2SE-1.4,这会导致1.5之后的一些新特性得不到支持。可以通过下面的方法修改:2、使用Maven管理依赖在以往的开发中,我一般都会把用到的依赖都放到一个文件夹下,需要什么就像里面添加什么,然后和源文件一同放入到SVN中。其他开发人员在检出项目时会把这些包
阅读全文
摘要:写在前面 自从参加了4月份的QCon以后,持续集成的念头一直在脑海中浮现。时隔四个月之后,终于有了实践的机会。在此,首先应该感谢头儿们的大力支持。记得参加Scrum的培训时,最开始提到的一个障碍就是来自上层。因为上层希望看到的是实实在在的成果,如果现有的开发模式和质量管理系统已经有了比较好的效果,他们就不太愿意尝试新的模式。而这次正是有了头儿们的理解和支持,我才能放开手脚、“无所顾忌”地尝试这些新手段。其次,应该感谢我的天才同事们。因为,每次即使小小的改动都会给他们的开发带来一些不便,但是他们都会毫无抱怨地接受,并且总能给出一些我意想不到的想法,帮助我不断地改善这个系统。虽然当前的CI系统还存
阅读全文
摘要:两个比较稳定的maven mirror <mirror> <id>jboss-public-repository-group</id> <mirrorOf>central</mirrorOf> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url> </mirror> <mirror> <id&g
阅读全文
摘要:最近学习Maven,发现其真的很强大,所以学一点也记一点。使用Maven的最大好处在于:生成工程骨架和管理JAR包依赖。Maven自带了很多的工程骨架,想自定义骨架可以使用交互式命令:Xml代码mvnarchetype:generate我的是Maven 2.2.1版本,系统自带的骨架一共有41个:Xml代码1:internal->appfuse-basic-jsf(AppFusearchetypeforcreatingawebapplicationwithHibernate,SpringandJSF)2:internal->appfuse-basic-spring(AppFusea
阅读全文
摘要:一.背景Maven2 的基本原理很简单,采用远程仓库和本地仓库以及 pom(project object model).xml ,将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的 jar ,同一个版本的 jar 只需下载一次,而且避免每个应用都去拷贝 jar 。如图 1 。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以在执行 maven 任务时,才会自动下载需要的插件。这个特性也为客户系统的升级带来的很大的方便,客户每次升级的时候可以使用maven的远程部署功能自动下载最新的系统组件(jar),并重新打包
阅读全文
摘要:环境:Ubuntu 8.10, tomcat6, mave2maven2有一个把web应用部署到tomcat下的插件 tomcat-maven-plugin , 我们可以使用这个插件把web应用一键式的部署到一个远程的tomcat中。插件的url: http://mojo.codehaus.org/tomcat-maven-plugin/1、要打开tomcat的manager功能这里要注意的问题是,如果你的web应用使用了虚拟主机,如www.test.com,那么你需要把manager在www.test.com下也部署一个。虚拟主机和应用的部署这里就不说明了。访问: http://www.te
阅读全文
摘要:aven 2.0.9版本,JDK 1.5.012,Eclipse 3.4版本,在使用maven打包时,经常会报GBK编码不支持,重新clean一下项目,然后再maven clean一下,基本上都能解决这个问题,但这个总归不是一个彻底的解决办法,最后查了一下maven,终于找到解决办法:Pom.xml中配置了编译插件:?123456789101112131415<plugin><artifactId>maven-compiler-plugin</artifactId><version>2.0.2</version><configu
阅读全文
摘要:软件版本:maven 2.2 tomcat 6.0,Eclipse 3.4首先是建立环境,tomcat、maven、m2eclipse都不说了,这不配好,剩下的你也别看了。都准备好了,那我们就一步一步的开始了。管理自己的tomcat.到tomcat的安装目录中,F:\J2EE\apache-tomcat-6.0.24\conf在其中增加一个用户定义,默认是没有用户的,结果如下:?12345<tomcat-users><user username="admin" password="password" roles="manage
阅读全文