程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 在Eclipse中使用ANT靈活構建Web應用

在Eclipse中使用ANT靈活構建Web應用

編輯:JAVA編程入門知識
前言
  
  ant是Java開發者工具箱的重要一環,junit,xdoclet等都與它緊密關聯,程序員可能習慣了IDE提供的自動構建,甚至部署的功能,從而忽略了ant本身,其實,主流的IDE通常是內置ant任務來完成這些工作的,熟悉ant內在的機理,可以閱讀或簡單修改build.XML無疑可以幫助你更靈活地集成、治理應用項目,假如需要學習maven這種開源項目治理解決方案,也是要以理解ant為基礎的喲。另外,使用ant的過程實際上對構建進行了文檔化,它是無關於IDE的,想象一下,你的同事中可能三分之一在用JbuilderX,三分之一用eclipse,還有一些是別的。
  
  本人使用eclipse3.0.1,以前的構建和發布工作都由myeclipse插件作了,趁周末實踐了一下手動構建,記此備忘。
  
  實踐
  
  預備工作:這是我的個人習慣,把所有公用的類庫jar置於一個固定目錄,分好類,不要丟在一個文件夾下,如jakarta-commons、hibernate、spring、struts等,這些是源碼構建時需要用到的,在部署時可能有一些不用再打進去了,比如servlet.jar。假如你們有自己的framework,也一並放在這裡。然後,打開eclipse,進入Windows->Preferences->Java->User Libraries,增加一個自己的庫,比如說mylib,把剛才那些公共的jar全部添入,這樣有個好處,在eclipse項目中,不用再看到煩人的長長的jar列表了,比較整潔。
  
  下來正式進行:
  
  1.新建一個Java Project,此時就不要再選你的j2ee插件內置的一些選項了,至簡即可。
  
  2.在root下建幾個文件夾,我們在網上下載的開源項目中經常可以看到這些,比如:
  
  src - 源碼
  classes - 編譯
  web - jsp等
  lib - 庫,這裡可以簡單地把mylib下的東東copy過來,便於將來發布源碼。
  dlist - 輸出的jar或war
  
  當然,我們要建一個build.xml,eclipse中會出現一個螞蟻的小圖標,一般這個文件建立後,下一個項目簡單的copy過去,稍加改動就可以了。
  
  3.打開項目的屬性頁,在Java Build Path的庫選項中,加入我們自定義的公共庫mylib.至於Builders方式就不用改了,使用默認的Java Builer即可,我只是項目部署時使用ant,平常的排錯工作就交給IDE吧。
  
  4.重中之重,寫你的build.xml,網上文章很海,我這裡就不再啰嗦了,基本上就分那幾個任務:
  
  4.1 先要聲明一些路徑變量,如
  
   <property name="war.dir" value="dlist" />
  也可以將其寫至properties文件中,在這裡引用;
  
  4.2 聲明編譯的類路徑,如下:
  
   <path id="master-classpath">
   <fileset dir="${lib.root}/struts">
  <include name="struts-menu-2.3.jar" />
  <include name="struts.jar" />
   </fileset>
   <fileset dir="${lib.root}/jakarta-commons">
  <include name="commons-*.jar" />
   </fileset>
   <fileset dir="${lib.root}/ibatis2.0.9">
  <include name="ibatis-*.jar" />
   </fileset>
   <fileset dir="${lib.root}/jdbcdriver">
  <include name="jtds-0.9-rc2.jar" />
   </fileset>s
  ......
  </path>
  4.3 清空輸出目錄,如web,dlist等。
  
  4.4 編譯構建:
  
   <target name="build" description="Compile main source tree java files into class files, generate jar files">
  
  <mkdir dir="${build.dir}" />
  
  <javac destdir="${build.dir}" source="1.3" target="1.3" debug="true" deprecation="false" optimize="false" failonerror="true">
   <src path="${src.dir}" />
   <classpath refid="master-classpath" />
  </javac>
  
  <copy todir="${build.dir}" preservelastmodified="true">
   <fileset dir="${src.dir}">
  <include name="**/*.xml" />
  <include name="**/*.properties" />
   </fileset>
  </copy>
  <!-- ============================================= -->
  <!-- 據測試,資源文件不能被打到jar文件中,其余均可 -->
  <!-- ============================================= -->
  <copy todir="${webclasses.dir}/conf" preservelastmodified="true">
   <fileset dir="${src.dir}/conf">
  <include name="springResources*.properties" />
   </fileset>
  </copy>
  
  <mkdir dir="${weblib.dir}" />
  
  <jar jarfile="${weblib.dir}/${name}.jar" compress="true">
   <fileset dir="${build.dir}">
  <include name="**" />
   </fileset>
  </jar>
  
  <copy todir="${weblib.dir}" preservelastmodified="true">
  
  <fileset dir="${lib.root}">
   <include name="log4j-1.2.8.jar" />
  </fileset>
  <fileset dir="${lib.root}/struts">
   <include name="struts-menu-2.3.jar" />
   <include name="struts.jar" />
  </fileset>
  <fileset dir="${lib.root}/jakarta-commons">
   <include name="commons-*.jar" />
  </fileset>
  <fileset dir="${lib.root}/spring-1.1.3">
   <include name="spring.jar" />
   <include name="aopalliance.jar" />
  </fileset>
  ......
  
  </copy>
  
  </target>
  
  <!-- ============================================= -->
  <!-- Compile main Java sources and copy libraries -->
  <!-- ============================================= -->
  <target name="warfile" description="Build the web application archive">
  
  <mkdir dir="${dist.dir}" />
  <war warfile="${dist.dir}/${name}.war" basedir="${war.dir}" webxml="${war.dir}/WEB-INF/web.xml">
   <include name="*" />
   <include name="WEB-INF/*.*" />
   <exclude name="WEB-INF/web.xml" />
   <include name="WEB-INF/classes/*.*" />
   <include name="WEB-INF/lib/**" />
   <exclude name="**/.*" />
  </war>
  
  </target>
  
  4.5 打成war
  
  
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved