-
CI---持续集成
2013-04-17 22:07:41
这几天公司在一个框架项目中开始使用了maven构建工具,同时帮开发人员一起研究了下hudson的使用,应该说这些工具
在目前的环境中已经用的很普遍了,但我们才刚刚开始,同时自己前些天刚也借了本《持续集成-软件质量改进和风险降低之道》在看就略微写点想法吧。
CI,全称Continuous Integration,已经风行国外好多年了,国内一些大的公司,也已经都做的很成熟了,对于中小公司来说有的像我们这样还在摸索阶段,有的没成本投入来做,或者只限于口头,并未实际行动。但学习了CI的概念、方法后觉得做软件的公司真的很有必要去投入做这个事情,因为前期成本的投入换来的是后期成倍的收益。
为什么这么说,CI的价值就在于减少风险、减少重复过程、生成可部署的软件、增强项目的可见性、建立起更强大的产品信心;我们在软件开发中会遇到很多编译上的问题,特别是将要发布的时候,或者发布后验证一些功能的时候,相信很多人都遇到过,手工的进行代码合并编辑,各种各样的配置文件等等,发布前主要是代码不一致,或者代码集成后出现编译失败,而发布后功能的验证更是令人头疼,明明在测试环境中都已通过的功能,在生产环境中却总是出现各种问题,于是又回头去找代码,或者配置方面的原因,说焦头烂额一点不为过。那么CI就是来解决这些问题的重要手段。
那么CI主要做些什么呢?下面就是它要做的事情:
1.源代码编译
2.数据库集成
3.测试
4.审查
5.部署
6.文档与反馈 -
myeclipse6.5中安装m2eclipse
2011-02-23 09:44:48
近来myeclipse6.0用的出问题,再也启不来了,于是只能更换,换了一个6.5版本,但很多东西都要重装,特别是maven2,上次装的时候老是JDK的问题,导致用不了,后来用网上的方法,左试右试终于搞好了,但还是不知所以然,这次重装想彻底搞清楚。
还是先安装mylyn和AJDT,这个不再详述,不过建议手动安装,用myeclipse自动安装,老是提示网络连接不通,不知别人是不是也这样。
然后安装m2eclipse,用http://m2eclipse.sonatype.org/update/这个地址去自动安装,也不行,只能手动安装。
安装完成后,重启m2eclipse。
结果提示:Eclipse is running in a JRE, but a JDK is required
上次怎么试成功的,给忘了,所以只能再次求助网络,最后发现,只要在eclipse.ini文件中增加
-vm
C:\Java\jdk1.5.0_12\bin\javaw.exe
于是加了,但还是出现提示,于是再次不断的尝试和查网络,最终发现了解决方法:
1.在启动myeclipse快捷方式时,需要更换参数"d:\MyEclipse 6.5\jre\bin\javaw.exe"为C:\Java\jdk1.5.0_12\bin\javaw.exe,这是因为两者的jdk不一致造成。如果直接在安装目录中的eclipse.exe启动,则不会出错了。
2.不能-vm C:\Java\jdk1.5.0_12\bin\javaw.exe这样添加,这样添加是没用的。
3.添加的内容需要加到-vmargs上面,不要加到文档的最后面,否则启动快捷方式的时候会出错
4.之前以为在window->proferences->java->Install JRES中调整JRE有关系,后来发现是没关系的,只要在eclipse.ini文件中加入jdk路径就好了
希望和各位使用maven的朋友共享。
-
maven终于能出包了
2010-12-16 16:11:14
学习maven近一个多月了,中间因为个人的事情,所以没有全力学习,但对概念的东西掌握了一些,但很多技术细节还是似懂非懂的,但还是拿一个真实的项目进行编译学习。
一个月下来,感觉maven真是学的很累,虽然不断的参阅《maven指南》,但真实项目比指南中的复杂,于是不断的在网上寻找着问题的解决,然后一步一步的前进。
终于代码能编译出来了,但最大的问题也随之而来,如何打包,特别在最后的资源拷贝中,试了很久,都无法把资源放到一起,先是class文件,然后是web-inf中的lib等文件,不断调试后,在网上找了近一周,才把资源都放在一起,但在打包过程中,assembling又会重新结构包的目录,所以老在打包中出现死循环的情况,最后发现还是自定义了输出目录惹的祸,去掉自定义输出目录后,感觉就简单多了。定义好包名就行了,展示下我父pom中的build部分:
<build>
<!-- 命令行输入时,默认执行mvn package -->
<!-- defaultGoal>package</defaultGoal>-->
<!-- 设定classes输出到WebRoot/WEB-INF/classes中 -->
<sourceDirectory>java</sourceDirectory>
<outputDirectory>target/classes</outputDirectory>
<resources>
<resource>
<directory>java\dao</directory>
<includes>
<include>**/*.hbm.xml</include>
</includes>
</resource>
<resource>
<directory>resources/cxf</directory>
</resource>
<resource>
<directory>resources/dao</directory>
</resource>
<resource>
<directory>resources</directory>
<excludes>
<exclude>cxf/*.xml</exclude>
<exclude>dao/*.xml</exclude>
</excludes>
</resource>
</resources>
<plugins>
<!-- war插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<extensions>false</extensions>
<inherited>true</inherited>
<configuration>
<warName>ecis_ws</warName>
<webXml>WEB-INF/web.xml</webXml>
<outputDirectory>ll/web-inf</outputDirectory>
<!-- <warSourceDirectory>WEB-INF</warSourceDirectory>-->
<webResources>
<resource>
<directory>\</directory>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<!-- 设定JDK版本及编码,同时设定外部引用的jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
<optimize>true</optimize>
<compilerArguments>
<extdirs>E:\maven-test\ecis_ws\WebRoot\WEB-INF\lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
请多多指教,里面还是有很多可以优化的,以及自动部署部分的plugin还未加入。希望可以和更多的朋友探讨maven,这是个难理解,学习时间较长的自动构建工具,但看到自动打包后能用的东西,心里还是感觉蛮爽的。
-
maven安装回顾
2010-11-25 10:41:25
maven安装有几天了,感觉装的很郁闷,安装环境:myeclipse6.0,从一开始看maven指南开始,也有好几周时间了,期间按照指南中的方法,通过cmd方式做了一些操作,感觉上手还是蛮快的,但要用到项目中,必须在开发环境中加入maven插件,于是这周开始了这方面的安装,但装了几天,最大的问题是maven插件的自动安装网站一直连接不上,网上找了很多方法,也没有一个头绪,结果问了一个同事,可以通过手工安装,把一些前提条件的插件安装好后,又重新安装maven插件,但安装完了还是出现了集成方面的错误:
The Maven Integration requires that Eclipse be running in a JDK,
because a number of Maven core plugins are using jars from the JDK.
按照网上的方式进行,也无从解决,maven集成后还是会继续报错,真不知道这个东西要怎么样才算装完呢,安装完才是第一步,后面让项目能自动集成起来,那才是考验呢。
-
今日所作的事情
2010-11-05 16:17:01
今天主要在研究maven2,通过对照maven中文指南,进行一步一步的学习,先从安装,到建立一个项目,然后用命令构建安装这个项目,最后通过运行打包的文件,可以看到自动构建的结果,感觉非常舒服,希望能逐步研究,可以运用到实际的项目中。这也是领导对我提出的要求,所以要好好学习。感觉自动构建也是很神奇的,只要一个文件进行配置,就可以自动打包部署,这样省去了以后每个版本打包需要手工配置的麻烦。这两天qq和360在打仗,我卸掉了360,不是因为360和qq的冲突,而是看到一则报道,说360不专业,本来我也不用360干吗,只是觉得系统补丁打打比较方便,所以就用了,有时用来查下木马啥的,看看系统健康程度,现在彻底放弃360,用别的工具打补丁也一样,杀毒还是用小红伞吧,其他再找个防火墙就行了,360出了那么多东西,什么防毒、浏览器,感觉不咋地,性能上跑不过别的杀毒软件。杀毒能力也不怎么样。至于qq嘛,一个聊天软件,发展到一个多功能平台,是赚足了RMB,就比如q币,需要RMB买,然后还有期限,确实有很多人去买,这虚拟化的货币真值钱,我感觉比RMB值钱多了,好像是1:1的,我是没买过q币,现在更是看见哪个赚钱,直接模仿抄袭人家,借助自己的优势来挤压对手的生存空间,所以觉得qq也好,360也好,在打架的时候还是多想想用户,是用户撑起了你们的空间,没有用户,你们算个啥呢,设想有一天没人用qq了,都用msn或者淘宝或者别的聊天工具,你腾讯还能这么牛X吗???360也一样哦,多去和国外的安全软件商比比,人家虽然是要钱的,但人家的东西确实好,要钱也值啊,你免费的,做了一点成绩就感觉自己很牛X吗?弄的自己四面楚歌,值吗??? -
有关selenium触发事件的问题
2010-11-03 14:53:45
近日在用selenium录制脚本时,遇到一个问题,在通过号码验证后,用type输入内容,点击按钮查询,在回放中,发现不能通过验证进行查询,多次脚本的修改还是不行。但验证明明已经通过了,而且手工去点也是不行,只有手工输入号码,才可以。于是在网上进行资料查询,也不断调试,但一直未解决,后询问开发人员得知,这段代码是一个触发事件,用onKeyUp函数来完成的,经过触发后,验证通过的号码才能进行查询。又再次进行网上查询,在一个博客中看到用KEYUP函数可以解决,但写的不详细,所以自己将脚本转换成Java,在开发环境中进行调试,终于得到解决。先看下keyup函数的格式:Simulates a user releasing a key.
Parameters
- locator
- an element locator
- keySequence
- Either be a string("\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "w", "\119".
- 使用时,一直对keySequence参数不理解,但多次调试后,终于通过了,代码如下:
- selenium.type("//input","13547368791");
- selenium.keyup("//input[@name='mobile']","e");
- 对于keySequence这个参数,发现任何字母都可以,只要有进行了,呵呵。
-
TD升级之经验
2008-05-19 20:29:37
公司TD安装在windows 2003 server下,使用时不稳定,同时每次进入TD都要安装插件,使用中很不爽,于是痛下决心,将TD迁移回windows 2000 server下面,并从7.6升级到8.0,以下是升级的步骤。
升级迁移步骤:
1.备份项目文件,数据库,特别是DOMSINFO下面的doms.mdb库,TD_Dir目录中的项目信息,项目数据库
2.安装8.0,sql2000
3.新建项目,最好先升级一下项目,建议项目名称与原项目的一致,然后关闭td服务器
4.用Access打开doms.mdb中的user表,只要拷贝即可,注意只要拷贝数据
6.将数据库还原,并拷贝TD_Dir目录中的项目文件,不需要拷贝DBID.INI,同时修改项目数据库的consonst表的版本号,和cycsy表加入CY_FOLDER_ID字段
7.在2000数据库中执行 EXEC sp_change_users_login'Report'
EXEC sp_change_users_login'Update_One','td','td'
使数据库td用户可以访问还原后的数据库
8.重新开td服务
9.升级项目,迁移完成
问题及处理
td8.0升级完成后,进行新的用户添加,无法添加,导致出现如下问题:
在最初进行升级时,将TD7.6的doms.mdb库中user表直接拷贝TD8.0的doms.mdb库对应表中,没有考虑到8.0中该表已经增加新的字段,造成在增加用户时提示
Error when trying to update TDUser.
Item cannot be found in the collection corresponding to the requested name or ordinal. |error '800a0cc1'。
所以在拷贝user表千万注意只要拷贝数据,因为8.0的user表比7.6的user表多了两个字段。
在增加字段后,再次升级,还是无法添加,如下问题:
提示:
Error when trying to update TDUser.
由于将在索引、主关键字、或关系中创建重复的值,请求对表的改变没有成功。改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复值并再试一次。
IDispatch error #3105.
经过不断摸索,终于发现问题症结在于doms.mdb中的user表与数据库user表之间存在索引或关联造成。在TD管理平台中的user tab表中的用户列表是和数据库中的user表相对应的,在最初升级时,虽然doms.mdb中的user进行了初始化,保证迁移过来的项目用户数据不丢,但当数据库user表和其关联后,数据进行了同步,但这个用户数据是迁移项目的,而不是TD本身的,所以当TD继续需要新增用户时,TD会重新建立用户ID,这时,新建的ID与原来已经在的用户ID相冲突,造成无法新增用户。
解决:将升级前拷贝的doms.mdb表,覆盖回去,同时不要重启td,就可以继续用原来的项目用户,也可以继续增加新用户。如果重启TD,造成迁移项目的用户数据丢失,需要重新把用户加到项目中去。对于全新的项目将不会受影响。
-
一个开始
2008-01-22 13:19:41
这是一个开始,将在这里记录一些测试的点点滴滴,哈哈哈!!
标题搜索
我的存档
数据统计
- 访问量: 11533
- 日志数: 8
- 建立时间: 2008-01-22
- 更新时间: 2013-04-17