隨筆 - 100  文章 - 50  trackbacks - 0
          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          我收藏的一些文章!

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          用Ant編譯Java Web程序

          分類: J2EE2009-03-27 15:14 1930人閱讀 評論(0) 收藏 舉報(bào)
          antjavawebclassincludedelete

          先看一下項(xiàng)目的目錄結(jié)構(gòu):

          source目錄里放Java源程序,classes目錄里放編譯好的class文件。這兩個目錄里的文件都要按包結(jié)構(gòu)組織好。當(dāng)然,classes目錄也可以不必事先建立,這可以交給Ant去做。以下是我寫的build.xml,放在Hello目錄下:

           

          1. <?xml version="1.0" encoding="UTF-8" ?>  
          2. <project name="hello" default="compile" basedir=".">  
          3.     <property name="tomcat.lib" value="/home/albert/Applications/apache-tomcat-5.5.26/common/lib" />  
          4.     <property name="dest.dir" value="WEB-INF/classes" />  
          5.     <property name="src.dir" value="source" />  
          6.     <target name="init">  
          7.         <mkdir dir="${dest.dir}" />  
          8.     </target>  
          9.     <target name="compile" depends="init">  
          10.         <javac srcdir="${src.dir}" destdir="${dest.dir}">  
          11.             <classpath>  
          12.                 <fileset dir="${tomcat.lib}">  
          13.                     <include name="*.jar" />  
          14.                 </fileset>  
          15.                 <fileset dir="WEB-INF/lib">  
          16.                     <include name="*.jar" />  
          17.                 </fileset>  
          18.             </classpath>  
          19.         </javac>  
          20.     </target>  
          21.     <target name="clean">  
          22.         <delete dir="${dest.dir}" />  
          23.     </target>  
          24. </project>  

           

          在Ant的構(gòu)建文件build.xml中,最重要的是target(目標(biāo))。一個build.xml往往包含了多個target,定義了一個軟件項(xiàng)目的構(gòu)建過程以及每步之間的依賴關(guān)系。例如對于這個項(xiàng)目來說,“編譯”必須要在創(chuàng)建完classes目錄后才能進(jìn)行。此外,在進(jìn)行編譯時,ant還會比較源文件和對應(yīng)的class文件的時間戳,以此來判斷源文件在上次編譯后是否被更新,是否需要重新編譯。知道了這些,就可以大體說下各項(xiàng)的含義了。

          最外層的project元素定義了項(xiàng)目的名稱(name),默認(rèn)構(gòu)建目標(biāo)(default)和構(gòu)建的基本目錄(basedir,當(dāng)前目錄 “.”)。basedir即設(shè)定文件中的相對路徑是相對于誰而言的。接下來有一些property元素,你可以把它們當(dāng)成一些變量的定義,這是為了接下來引用的方便。

          然后定義了三個target元素。第一個target的名字是init。名字的作用是:如果你想執(zhí)行某個target的任務(wù),只需在命令行下執(zhí)行 ant 即可。如果省略了,ant會執(zhí)行在project元素中定義的默認(rèn)目標(biāo)。在里面用mkdir定義了一個任務(wù),即創(chuàng)建classes目錄。這里引用了剛才定義的property,注意引用property的寫法:”${dest.dir}”。

          第二個是compile目標(biāo)。depends=”init”說明它依賴于init。即當(dāng)Ant發(fā)現(xiàn)init目錄沒有完成時(classes目錄還沒有創(chuàng)建時),Ant會先執(zhí)行init目標(biāo)。compile目標(biāo)里面用javac元素描述了編譯任務(wù)。srcdir和destdir分別指定了源文件的目錄和編譯后class文件的目錄。盡管因?yàn)榘Y(jié)構(gòu)的原因,source目錄下還有子目錄,但Ant會把source目錄下的所有Java源文件進(jìn)行編譯,并且在classes目錄下建立相應(yīng)的包結(jié)構(gòu)目錄,把所有的class文件放在正確的位置上。所有這一切都只是用這兩個參數(shù)來描述的。再往里是 classpath元素,用來設(shè)定編譯時的classpath,以便引用servlet-api.jar和struts庫里的類。我偷了個懶,把所有的 jar文件都包含進(jìn)來了。用的是fileset,指定好目錄和要包含的文件名(可以有通配符)就行了。

          最后一個target clean是清除編譯生成的文件,用delete元素來完成。這樣當(dāng)在命令行下執(zhí)行ant clean后,classes目錄就被刪除了。

          把這個build.xml放在項(xiàng)目目錄Hello中,以后只要在Hello目錄下執(zhí)行ant,就會自動把所有需要編譯的文件編譯好后放在classes目錄里了,非常方便。
          others
          <?xml version="1.0" encoding="UTF-8"?>
          <project name="hello" default="compile" basedir=".">

              <property name="project.lib" value="WebRoot/WEB-INF/lib" />
              <property name="tomcat.lib" value="D:/apache-tomcat-6.0.35/lib" />
              <property name="dest.dir" value="WebRoot/WEB-INF/classes" />
              <property name="src.dir" value="src" />
              <target name="init">
                  <mkdir dir="${dest.dir}" />
              </target>
              <target name="compile" depends="init">
                  <javac srcdir="${src.dir}" destdir="${dest.dir}" includeAntRuntime="false"  encoding="UTF-8">
                      <classpath>
                          <fileset dir="${project.lib}">
                              <include name="*.jar" />
                          </fileset>
                          <fileset dir="${tomcat.lib}">
                              <include name="*.jar" />
                          </fileset>                
                      </classpath>
                  </javac>
              </target>
              <target name="clean">
                  <delete dir="${dest.dir}" />
              </target>
          </project>
          posted on 2014-08-27 22:34 fly 閱讀(122) 評論(0)  編輯  收藏 所屬分類: Ant學(xué)習(xí)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 固镇县| 巴彦县| 荃湾区| 时尚| 普宁市| 当雄县| 东阿县| 漳浦县| 浦北县| 乐安县| 昌江| 衡阳市| 枝江市| 吴堡县| 新沂市| 保德县| 乳源| 曲阜市| 手机| 崇信县| 麻栗坡县| 贵州省| 随州市| 兴安盟| 东丽区| 龙陵县| 嵊州市| 保德县| 辰溪县| 宝应县| 旬邑县| 瑞安市| 昂仁县| 厦门市| 那曲县| 苏尼特右旗| 洞头县| 黄冈市| 马龙县| 牟定县| 子洲县|