前两周做的web项目要部署到服务器上去,为了后续升级部署方便,决定采用Ant进行(开发用的myeclipse 8.5),ant打包测试也是在myeclipse上进行,build.xml测试完成后地通过本地配置的ant进行手工打包:ant -buildfile build.xml.下面将相关过程简单总结如下:
(1)运用myeclipse对web项目打war包,观察其他结构和组成,方便ant打包build.xml整理
图1 web项目s2si结构
图2 myeclipse打出war包总体结构
图3.myeclipse打出war包WEB-INFO目录结构
图4.myeclipse打出war包WEB-INFO\classes目录结构
(2)build.xml内容整理:
(3)本地安装Ant并设置ANT_HOME和path:
(4)运用本地ant打包:
---->>打出war包查看:
--->>
(5)问题及解决归纳总结:
A1.build.xml注意设置basedir:
--->>这里basedir="."意思是基础目录是与build.xml同级目录,比如说src或 s2si,后续新建目录都是在此基础上进行,为了方便打包,可以根据自己需要放置 build.xml,比如我就放在了工程s2si根目录下.
A2.build.xml注意设置命令中的basedir:
打包是将编译好的class文件和相关配置文件集体打包,所以应该选择 "${build.dir}",开始自己犯错basedir="${basedir}",直接导致打出的war包下 面很乱,即使打包过程没出错,但部署到tomcat上就会报一大堆问题.
A3.打包时需要注意编码和jdk版本:
deprecation="false" optimize="false" failonerror="true" srcdir="${src.dir}" >
--->>字符编码要和web项目编码一致,jdk版本要和本地安装版本一致.如果不致,myeclipse中运行build.xml打包编译不过,本地手工ant打包会报如下错:
eclipse 出现警告: [options] 未与 -source 1.6 一起设置引导类路径.
A4.build.xml拷贝页面文件和配置文件时注意excludes使用:
--->>说明:
${src.dir}=s2si/src
${webRoot.dir}=s2si/WebRoot
这里需要注意的是要排除指定目录中某些规则的文件必须用:excludes="**/*.java"或excludes="**/*.class",**/*.*这是ant里的规则,不是指两级目录后的规则筛选.
--->> classpath备忘:
这里用classpath标签,指定路径时用classpathref还是用path还是用refid有不同的情况,这里用的是refid,注意根据自己情况而定.
---->> ant打包核心build.xml内容如下:
<javac ="" destdir="${build.web.class.dir}" source="1.6" target="1.6" debug="on"
deprecation="false" optimize="false" failonerror="true" srcdir="${src.dir}" >
--->>关于ant基础知识和使用指南,请参见:
http://blog.itpub.net/29119536/viewspace-1203386/
--->>web项目打包指南请参见:
http://blog.itpub.net/29119536/viewspace-1204798/