当前位置: 首页 >> Java >> web项目ant打包完整案例

web项目ant打包完整案例

发表时间:2014-09-28 10:31  |  0条评论  |  点击数:2605  |  作者:jws132
========================================================================================================
                                                            web项目ant打包完整案例
========================================================================================================


  
 前两周做的web项目要部署到服务器上去,为了后续升级部署方便,决定采用Ant进行(开发用的myeclipse 8.5),ant打包测试也是在myeclipse上进行,build.xml测试完成后地通过本地配置的ant进行手工打包:ant -buildfile build.xml.下面将相关过程简单总结如下:

   (1)运用myeclipseweb项目打war,观察其他结构和组成,方便ant打包build.xml整理

    

 图1 web项目s2si结构

 

 2 myeclipse打出war包总体结构


 

3.myeclipse打出warWEB-INFO目录结构

 

4.myeclipse打出warWEB-INFO\classes目录结构

   (2)build.xml内容整理:

    

 

   (3)本地安装Ant并设置ANT_HOMEpath

     

 

   (4)运用本地ant打包:

    

---->>打出war包查看:

    

--->>

    

 

   (5)问题及解决归纳总结:

     A1.build.xml注意设置basedir:

     <project name="s2si"  default="dist" basedir=".">

     --->>这里basedir="."意思是基础目录是与build.xml同级目录,比如说src或 s2si,后续新建目录都是在此基础上进行,为了方便打包,可以根据自己需要放置 build.xml,比如我就放在了工程s2si根目录下.

 

     A2.build.xml注意设置<war>命令中的basedir:

      <war destfile="${build.dir}/${ant.project.name}.war"  basedir="${build.dir}" webxml="${build.web.dir}/web.xml"/>

打包是将编译好的class文件和相关配置文件集体打包,所以应该选择   "${build.dir}",开始自己犯错basedir="${basedir}",直接导致打出的war包下 面很乱,即使打包过程没出错,但部署到tomcat上就会报一大堆问题.

 

     A3.打包时需要注意编码和jdk版本:

    <javac   destdir="${build.web.class.dir}" source="1.6" target="1.6" debug="on" 
    deprecation="false" optimize="false" failonerror="true" srcdir="${src.dir}" >
   <compilerarg line="-encoding UTF-8"/>
   <classpath refid="project.classpath" ></classpath>
    </javac>


--->>字符编码要和web项目编码一致,jdk版本要和本地安装版本一致.如果不致,myeclipse中运行build.xml打包编译不过,本地手工ant打包会报如下错:

 eclipse 出现警告: [options] 未与 -source 1.6 一起设置引导类路径.

 

A4.build.xml拷贝页面文件和配置文件时注意excludes使用:

<copy todir="${build.web.class.dir}">

       <!-- 复制源代码目录中所有的非java文件 -->

        <fileset dir="${src.dir}"  excludes="**/*.java">

        </fileset>

    </copy>

  

    <copy todir="${build.dir}">

        <!-- WebRoot目录中所有的非java文件 -->

        <fileset dir="${webRoot.dir}" excludes="**/*.class" >

    </fileset>
 </copy>


 

--->>说明:

 ${src.dir}=s2si/src

 ${webRoot.dir}=s2si/WebRoot

这里需要注意的是要排除指定目录中某些规则的文件必须用:excludes="**/*.java"或excludes="**/*.class",**/*.*这是ant里的规则,不是指两级目录后的规则筛选.

--->> classpath备忘:

<classpath refid="project.classpath" ></classpath>

这里用classpath标签,指定路径时用classpathref还是用path还是用refid有不同的情况,这里用的是refid,注意根据自己情况而定.
---->> ant打包核心build.xml内容如下:
 <?xml version="1.0" encoding="UTF-8"?>
<project name="s2si"  default="dist" basedir=".">
<property name="build.dir" value="build" description="输出目录"/>
<property name="build.web.dir" value="${build.dir}/WEB-INF" description="web配置输出目录"/>
<property name="build.web.class.dir" value="${build.web.dir}/classes" description="web类输出目录"/>
<property name="build.web.lib.dir" value="${build.web.dir}/lib" description="web引用jar输出目录"/>
<property name="src.dir" value="src" description="源代码目录"/>
<property name="webRoot.dir" value="${basedir}/WebRoot" />  
<property name="lib.dir" value="${webRoot.dir}/WEB-INF/lib" /> 
<property name="encoding" value="utf-8" description="文件编码"/>

<path id="project.classpath">
<fileset dir="${lib.dir}">  
           <include name="*.jar" />  
</fileset>  
<pathelement path="${basedir}/WebRoot/WEB-INF/lib"/>
</path>

<target name="init">
<delete dir="${build.dir}"/>
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.web.dir}"/>
<mkdir dir="${build.web.lib.dir}"/>
<mkdir dir="${build.web.class.dir}"/> 
</target>

<target name="compile" depends="init">

<javac   destdir="${build.web.class.dir}" source="1.6" target="1.6" debug="on" 
deprecation="false" optimize="false" failonerror="true" srcdir="${src.dir}" >
   <compilerarg line="-encoding UTF-8"/>
   <classpath refid="project.classpath" ></classpath>
</javac> 

<copy todir="${build.web.class.dir}">
<!-- 复制源代码目录中所有的非java文件 -->
<fileset dir="${src.dir}"  excludes="**/*.java">
</fileset>
</copy>
  
<copy todir="${build.dir}">
<!-- WebRoot目录中所有的非java文件 -->
<fileset dir="${webRoot.dir}" excludes="**/*.class" >
</fileset>
</copy>

</target>

<target name="main" depends="init,compile" />
<target name="dist" depends="main" description="将工程打成war包">
<war destfile="${build.dir}/${ant.project.name}.war" basedir="${build.dir}" webxml="${build.web.dir}/web.xml"/>
</target>
</project>

--->>关于ant基础知识和使用指南,请参见:
http://blog.itpub.net/29119536/viewspace-1203386/
--->>web项目打包指南请参见:
http://blog.itpub.net/29119536/viewspace-1204798/

网友评论 0条评论
  
  • 全部评论
  • 站主信息
网名:小白 | ゞ_Shuつ
姓名:蒋文书
生日:1990-05-22
籍贯:浙江省—温州市
现居:北京市—昌平区
职业:网站设计、网站制作。今后想成为一名高级程序员
爱好:研究java,php编程,打球,唱歌,登山。
喜欢的书:《红与黑》《红楼梦》
喜欢的歌手:黄家驹 Rain 六哲
网站信息:本站正在完善中下步会新增用户中心预计完成在7月中旬
  • 热门关注
  • 资深旅游达人,走南闯北,半年写完超长游记...

  • 资深旅游达人,走南闯北,半年写完超长游记...

  • 资深旅游达人,走南闯北,半年写完超长游记...

  • 最新评论
    暂无数据
  • 【聚会】22日跟大闽网友一起看世界杯,小龙虾啤酒通通免费吃...[详细]

  • 【福利】带孩子玩水不要钱!50份白水洋套票免费送了...[详细]

  • 【福利】熬夜看球太累太伤?没关系!养生粤菜免费吃起来...[详细]

  • 【独家】送福利来了,空调挂机免费清洗,快来回帖报名吧...[详细]

  • 【独家】猜世界杯冠军,8套1088元纯金纪念钞免费送! ...[详细]

Copyright © 2013-2016 . 蒋文书个人博客 版权所有 浙ICP备16006289号