读好书,交益友
分类: Java
2013-05-08 17:06:16
构建系统的技术含量不高,c和cpp 一般都是make ,cmake,scons。vc++ 也可以写source文件使用nmake进行build。
对于java构建系统就比较复杂了。
02年时候,使用struts 1.0的时候,经常修改Form文件后,再去修改struts-config.xml文件,不胜其烦,而且很容易出错。开始使用xdoclet,自动生成部署文件。
以后使用的ejb和hibernate时,经常用它生成ejb-jar.xml和*.hbm.xml文件。
要使用xdoclet,必须使用ant 1.0,所以说ant in action 和xdoclet in anction是我读的第一二本纯英文的java构建方面的书籍。
xdoclet也可以生成jsp tag的配置文件,不过一般用的很少,当然也可以生成web.xml,需要手工处理一下,一般就不用这个功能。
ant的功能很是强大,可以结合excel的vbscript ,生成非常直观的测试结果图表。甚至可以调用installshield,生成安装文件。天清汉马UTM数据中心和集中监控,都是ant脚本直接从cvs服务器直接拿到代码,编译后,自动打包tomcat和jdk,最后生成exe安装文件。
当然ant 也带来很多问题,主要是jar版本的管理问题。sohu blog的request系统,居然出现spring 2.5和spring 2.0的jar 同时存在。为了解决这个问题,sohu blog 开始使用maven,发布之前使用统一的maven脚本,进行编译,打包。
对于ide来说,maven可以生成eclipse和idea工程,eclipse基于工程的配置,对maven支持很不友好。而idea改为module的设计,和maven的设计如出一辙。
由于sohu白社会开发的工程浩大,涉及人员众多,开始的时候构建本地repository,使用maven进行每日构建。
对于网御的sag构建来说,最初考虑使用maven,后来因为代码架构的根本不符合maven的结构,况且maven也不支持AllJarsInOne,最后使用ant2 写了build.xml文件。
因为生产jar需要签名后发布到linux上面,凯凯使用gant 加groovy的脚本,结合ssh登录,自动发布到linux主机,并且重启java。
当时我是ruby fans,就用rake 加jruby 重写了发布脚本。
最后还是由于定制版本jar文件较多,涉及到jar管理问题,最后使用Ivy进行统一管理。
最近使用spring和hibernate,发现构建程序已经从maven改为gradle,我想主要原因是maven pom.xml配置复杂,而且不是很灵活。我也准备用gradle构建我的程序了。