ECLIPSE环境下利用ANT进行JSF开发入门(三)

4.编写ANT构建文件

       ANT是一个强大的开源构建工具,它可以快速地对整个WEB应用程序进行编译打包部署等工作,以目标的方式来管理不同的任务,ANT把建立一个WEB应用所需做的大量工作都集成在了一起统一地管理起来,这种方式大大地提高了应用构建的效率和灵活性.

       针对本文所述的应用我编写了以下这个构建文件,文件名为build.xml:

       <?xml version="1.0"?>

       <project basedir=".">

 

       <property name="tomcathome" value="F:/Tomcat5.5"/>

       <property name="lib.dir" value="webapp/web/WEB-INF/lib" />

       <property name="deploy.destfile.jar" value="webapp/web/WEB-INF/lib/deploy-myJSF.jar" />

       <property name="deploy.destdir.class" value="webapp/web/WEB-INF/classes/webapp/src/com/corejsf" />

       <property name="deploy.properties.from" value="build/webapp/src/com/corejsf" />

       <property name="deploy.properties.to.build" value="build/webapp/src/com/corejsf" />

       <property name="deploy.properties.to.webinf" value="webapp/web/WEB-INF/classes/webapp/src/com/corejsf" />

      

       <path id="build.classpath">

              <pathelement location="${lib.dir}/commons-beanutils.jar" />   

              <pathelement location="${lib.dir}/commons-collections.jar" />

              <pathelement location="${lib.dir}/commons-digester.jar" />

              <pathelement location="${lib.dir}/commons-logging.jar" />

              <pathelement location="${lib.dir}/jsf-api.jar" />

              <pathelement location="${lib.dir}/jstl.jar" />

              <pathelement location="${lib.dir}/standard.jar" />

       </path>

      

       <target name="clean">

              <echo message="Delete work dir..."></echo>

              <delete dir="work"></delete>   <!--delete webapp cache-->

              <delete dir="lib"></delete>

              <delete dir="build"></delete>

       </target>

      

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

              <echo message="Init part of this project..." />

              <mkdir dir="build"/>

              <mkdir dir="lib"/>

       </target>

      

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

              <javac destdir="build">

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

                     <src path="webapp/src"></src>

              </javac>

       </target>

      

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

              <jar destfile="lib/myjsf.jar" basedir="build">

                     <manifest>

                            <attribute name="Build-By" value="Bill-Ant" />

                     </manifest>

              </jar>

       </target>

      

       <target name="deploy" depends="mkjar">

              <copy file="lib/myjsf.jar" tofile="${deploy.destfile.jar}"></copy>

              <copy todir="${deploy.destdir.class}">

                     <fileset dir="build/webapp/src/com/corejsf">

                            <include name="*.class"/>

                     </fileset>

              </copy>

              <copy todir="${deploy.properties.to.build}">

                     <fileset dir="${deploy.properties.from}">

                            <include name="*.properties"/>

                     </fileset>

              </copy>

              <copy todir="${deploy.properties.to.webinf}">

                     <fileset dir="${deploy.properties.from}">

                            <include name="*.properties"/>

                     </fileset>

              </copy>

       </target>

      

       <target name="runserver" depends="deploy">

              <exec dir="${tomcathome}/bin" executable="${tomcathome}/bin/startup.bat" ></exec>

       </target>

</project>

       project是整个构建文件的根,向下看就是属性定义,属性是一个名称/值对,所以property标签就有两个属性,一个是name,另一个是value,属性定义下面是path结点,这一段指定了在编译器编译的时候要用到的jar包的路径.在整个文件中有很多的${}符号,这个符号就是对属性的引用,大括号中是属性名称.

       Jar包定义段之后就是各个目标的定义了,目标标签是<target>,目标标签主要用到的属性有namedepends.name指定目标的名称,depends指定目标的依赖特性,当A目标有一个depends=”B”属性是,就说明A的运行依赖于B,在运行A的时候如果没有运行BANT会自动地先运行B目标再运行A目标.

       在这个文件中定义了6个目标.分别是:cleaninitcompilemkjardeployrunserver,其中clean目标用来清除产生的工作目录和过期的类和jar.在构建前进行清理是一个好习惯.init是进行初始化,是用来建立一些在编译构建过程中需要的文件夹.compile目标就是进行JAVA文件的编译,mkjar目标是把编译后的类文件打成jar包,deploy是把编译好的类文件和jar包部署到WEB-INF.最后一个目标就是运行TOMCAT服务器.

       下面对一些用到的ANT标签进行说明:

       <property name="propertyName" value="propertyValue" />:属性定义,name是属性名称,value是属性值

      

       <javac destdir="build">

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

              <src path="webapp/src"></src>

       </javac>:编译JAVA源文件,其子标签src指定要编译的源文件目录;classpath指定查找用户类文件的位置,功能与javac命令的-classpath参数相同.

      

       <jar destfile="dest.jar" basedir="classes_dir" />:jar包,destfilejar包文件名,可以包含路径信息;basedir是要打包的class文件目录.也可以用下面的形式:

       <jar destfile="dest.jar" basedir="classes_dir">

              <manifest>

                     <attribute name="Built-By" value="${user.name}">

                     <attribute name="Main-class" value="MainClass">

              </manifest>

       </jar>

manifest子结点指定为jar包生成一个清单文件,manifest的子结点说明了清单文件中的内容,可见清单文件中的内容也是名称/值对.在上面定义了作者和主类.

 

<delete dir="${toBeDelete_dir}" /> :删除指定的目录

 

<mkdir dir="${buildDir}" />:新建目录

 

<copy file="src/test.java" tofile="src/testCopy.java" /> :复制文件并改名

 

<move file="src/test.java" tofile="src/testMove.java" /> :仅改名不复制(重命名)

 

<zip destfile=”test.zip” basedir=”toBeZipDir” />:压缩文件

      

<exec dir="${tomcathome}/bin" executable="${tomcathome}/bin/startup.bat"  /> :执行外部文件.

 

把上面的构建文件内容复制到WEB应用的根目录下保存为build.xml.

 

5.编写BAT批处理文件

       到现在为止,WEB应用程序部分就完成了.BAT文件的目的就是把所有要进行的工作都集成起来.这一步不是必要的,但确实非常有用的.要执行本文的WEB应用可以运行如下的批处理文件:

       SET ANT_HOME=F:/devSpace/Ant- 1.6.2

    path=%ANT_HOME%/bin

    SET PATH=%PATH%

call ant -f F:/workspace/JSFWebAppEx/build.xml runserver

    第一句是设置ANTHOME目录,第二句是设置ANT.exe的目录,最后一句就是调用ANT-f参数是指定构建文件路径.runserver是构建文件中的目标名称,因为在本文的构建文件中,runserver依赖于deploydeploy依赖于mkjarmkjar依赖于compilecompile依赖于initinit依赖于clean,所以在ANT.EXE中指定运行runserver时,ANT会自动地从第一个目标开始运行.

    把上面的批处理文件内容保存到WEB应用的根目录下的run.bat.

6.运行WEB应用

       TOMCAT 运行起来以后就可以在浏览器中观察结果了 . 注意 : 如果不知道 HTTP 的端口号,那么在输入 URL 以前请先在 %TOMCAT_HOME%/conf/server.xml 中查看 HTTP 的端口号 . 然后输入 http://localhost:8888/JSFApp/faces/index.jsp( 假设端口号是 8888 WEB 应用的虚拟根目录是 JSFApp).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值