Build Spring3 惊喜手记 ^^^^^^^^^^^^^^^^^^^^^^ - 作者:臭豆腐[trydofor.com] - 日期:2009-12-21 - 授权:署名-非商业-保持一致 1.0 协议 - 声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。 0. 文档目录 ^^^^^^^^^^^ [[<=$INDEX]] 1. 简单目标 ^^^^^^^^^^^ 目标是,把spring-framework-3.0.0.RELEASE导入Eclipse,编译无错误。 手册分六步:http://blog.springsource.com/2009/03/03/building-spring-3/ 简单明了,可操作起来,得到很多惊喜。 本地环境:WinXP,ant-1.7.0,jdk1.6.0_16 考虑网速,省去svn检出,下载了spring-framework-3.0.0.RELEASE-with-docs.zip。 解压缩,进入projects/build-spring-framework目录,输入ant,切换窗口,忙别事。 2. 首次惊喜 ^^^^^^^^^^^ 5分钟吧,切窗口回来,得到惊喜(控制宽度,文本进行了手工折行)。 ............................................................................. resolve.compile: [ivy:cachepath] :: Ivy 2.1.0 - 20090925235825 :: http://ant.apache.org/ivy/ :: [ivy:cachepath] :: loading settings :: file = E:\mess\projects\spring-build\common\ivysettings.xml [subant] Leaving directory: E:\mess\projects\org.springframework.instrument BUILD FAILED E:\mess\projects\spring-build\multi-bundle\artifact.xml:45: The following error occurred while executing this line: E:\mess\projects\spring-build\multi-bundle\common.xml:71: The following error occurred while executing this line: E:\mess\projects\spring-build\common\common.xml:91: impossible to configure ivy:settings with given file: E:\mess\projects\spring-build\common\ivysettings.xml : java.text.ParseException: failed to load settings from file:/E:/mess/projects/spring-build/common/ivysettings.xml: impossible to define new type: class not found: org.springframework.aws.ivy.S3Resolver in [] nor Ivy classloader ............................................................................. 一头雾水,几度搜索,得到线索和结论是, Err with Pre-existing ant ivy jar (org.springframework.aws.ivy.S3Resolver) 删除 $ANT/lib/ivy-2.1.0.jar。 继续ant,继续切换窗口。 3. 再次惊喜 ^^^^^^^^^^^ 不知多久,窗口切换了好几回,文字在屏幕上上升,不亦乐乎。 出了个插曲:java.lang.OutOfMemoryError: PermGen space 修改环境变量: ANT_OPTS=-Xms256m -Xmx768m -XX:MaxNewSize=256m -XX:MaxPermSize=512m JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=1024m 继续 ant,继续切换窗口,但最终得到惊喜。 ............................................................................. [ivy:cachepath] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:cachepath] :: FAILED DOWNLOADS :: [ivy:cachepath] :: ^ see resolution messages for details ^ :: [ivy:cachepath] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:cachepath] :: org.hibernate#com.springsource.org.hibernate; 3.3.1.GA!com.springsource.org.hibernate.jar [ivy:cachepath] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:cachepath] [ivy:cachepath] [ivy:cachepath] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS [subant] Leaving directory: E:\mess\projects\org.springframework.orm BUILD FAILED ............................................................................. 重复了几次,都没有成功,视乎是网络问题?! 4. 换个角度 ^^^^^^^^^^^ 可能是点太背了吧,换个角度,转移到日本中转服务器碰碰运气。 CentOS release 4.3,但是java6,ant1.7和svn都没有。 ======================== tty: 安装环境 ======================== #安装 svn sudo yum -y install subversion // 简易安装 svn --version // 1.0 版本太低 sudo yum -y remove subversion // 卸载 #下载rpm wget http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/1.6.0/rhel4/i386/subversion-1.6.0-1.i386.rpm wget http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/1.6.0/rhel4/i386/apr-0.9.12-2.i386.rpm wget http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/1.6.0/rhel4/i386/apr-util-0.9.12-1.i386.rpm wget http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/1.6.0/rhel4/i386/neon-0.28.4-1.i386.rpm wget http://the.earth.li/pub/subversion/summersoft.fay.ar.us/pub/subversion/latest/1.6.0/rhel4/i386/sqlite-3.5.9-4.1.i386.rpm #强制安装 sudo rpm -ivh apr-0.9.12-2.i386.rpm --force sudo rpm -ivh apr-util-0.9.12-1.i386.rpm --force sudo rpm -ivh neon-0.28.4-1.i386.rpm --force sudo rpm -ivh sqlite-3.5.9-4.1.i386.rpm --force sudo rpm -ivh subversion-1.6.0-1.i386.rpm svn --version >svn, version 1.6.0 (r36650) #安装java6和ant1.7后设置环境变量 cat ~/.bash_profile >ANT_HOME=/usr/local/ant-1.7.0/ >JAVA_HOME=/home/shirj/bin/jdk1.6.0_17/ >PATH=$JAVA_HOME/bin/:$ANT_HOME/bin/:$PATH >export ANT_OPTS="-Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=1024m" >export JAVA_HOME >export ANT_HOME >export PATH #按照手册上进行 svn ls https://src.springsource.org/svn/spring-framework svn ls https://src.springsource.org/svn/spring-framework/tags svn co https://src.springsource.org/svn/spring-framework/tags/spring-framework-3.0.0.RELEASE/ du -sh spring-framework-3.0.0.RELEASE cd spring-framework-3.0.0.RELEASE/ cd build-spring-framework ant #挨个目录理一下依赖关系 for f in org.springframework.*; do if [ -f $f/build.xml ]; then cd $f; ant common-common.resolve; cd ..; fi; done du -sh ivy-cache >210M ivy-cache zip -9r ivy-cache.zip ivy-cache =============================================================== 网络条件很不错,下载ivy-cache.zip,替换到本地,23个工程好使了21个。 org.springframework.spring-library spring-framework-reference org.springframework.aop org.springframework.asm org.springframework.aspects org.springframework.beans org.springframework.context org.springframework.context.support org.springframework.core org.springframework.expression org.springframework.instrument org.springframework.instrument.tomcat org.springframework.integration-tests org.springframework.jdbc org.springframework.jms org.springframework.orm org.springframework.oxm org.springframework.test org.springframework.transaction org.springframework.web org.springframework.web.portlet org.springframework.web.servlet org.springframework.web.struts 出错的2个是, org.springframework.web.servlet工程 org.springframework.web.servlet.view.BaseViewTests 第173行有个字符,需要以UTF8编译。 org.springframework.oxm工程 主要是以下测试代码的问题。 src/test/java/org/springframework/oxm/castor/ src/test/java/org/springframework/oxm/xmlbeans/ src/test/java/org/springframework/oxm/jaxb/ 原因是找不到以下8个类: Flight、FlightDocument、Flights FlightsDocument、FlightType ObjectFactory、Order、OrderItem 4. 拒不信邪 ^^^^^^^^^^^ 对于“再次惊喜”只是的网络故障,始终不能归咎于人品问题。 于是一步一步的,从头再来了一遍,依然没有成功 :( 结论是,在彻彻底底搞清楚之前,千万不要和人品过不去。