熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

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

2013-11-23 20:16:13  來源: Java開源技術 

  前言
  ant是java開發者工具箱的重要一環junitxdoclet等都與它緊密關聯程序員可能習慣了IDE提供的自動構建甚至部署的功能從而忽略了ant本身其實主流的IDE通常是內置ant任務來完成這些工作的熟悉ant內在的機理可以閱讀或簡單修改buildxml無疑可以幫助你更靈活地集成管理應用項目如果需要學習maven這種開源項目管理解決方案也是要以理解ant為基礎的喲另外使用ant的過程實際上對構建進行了文檔化它是無關於IDE的想象一下你的同事中可能三分之一在用JbuilderX三分之一用eclipse還有一些是別的
  
  本人使用eclipse以前的構建和發布工作都由myeclipse插件作了趁周末實踐了一下手動構建記此備忘
  
  實踐
  准備工作這是我的個人習慣把所有公用的類庫jar置於一個固定目錄分好類不要丟在一個文件夾下如jakartacommonshibernatespringstruts等這些是源碼構建時需要用到的在部署時可能有一些不用再打進去了比如servletjar如果你們有自己的framework也一並放在這裡然後打開eclipse進入Windows>Preferences>Java>User Libraries增加一個自己的庫比如說mylib把剛才那些公共的jar全部添入這樣有個好處在eclipse項目中不用再看到煩人的長長的jar列表了比較整潔
  
  下來正式進行
  
  新建一個Java Project此時就不要再選你的jee插件內置的一些選項了至簡即可
  
  在root下建幾個文件夾我們在網上下載的開源項目中經常可以看到這些比如
  
  src 源碼
  classes 編譯
  web jsp等
  lib 這裡可以簡單地把mylib下的東東copy過來便於將來發布源碼
  dlist 輸出的jar或war
  
  當然我們要建一個buildxmleclipse中會出現一個螞蟻的小圖標一般這個文件建立後下一個項目簡單的copy過去稍加改動就可以了
  
  打開項目的屬性頁在Java Build Path的庫選項中加入我們自定義的公共庫mylib至於Builders方式就不用改了使用默認的Java Builer即可我只是項目部署時使用ant平常的排錯工作就交給IDE吧
  
  重中之重寫你的buildxml網上文章很海我這裡就不再啰嗦了基本上就分那幾個任務
  
   先要聲明一些路徑變量
  
  <property name=wardir value=dlist />
  
  也可以將其寫至properties文件中在這裡引用;
  
   聲明編譯的類路徑如下:
  
  <path id=masterclasspath
  <fileset dir=${libroot}/struts
  <include name=strutsmenujar />
  <include name=strutsjar />
  </fileset>
  <fileset dir=${libroot}/jakartacommons
  <include name=commons*jar />
  </fileset>
  <fileset dir=${libroot}/ibatis
  <include name=ibatis*jar />
  </fileset>
  <fileset dir=${libroot}/jdbcdriver
  <include name=jtdsrcjar />
  </fileset>s
  
  </path>
  
   清空輸出目錄如webdlist等
  
   編譯構建:
  
  <target name=build description=Compile main source tree java files into class files generate jar files
  
  <mkdir dir=${builddir} />
  
  <javac destdir=${builddir} source= target= debug=true deprecation=false optimize=false failonerror=true
  <src path=${srcdir} />
  <classpath refid=masterclasspath />
  </javac>
  
  <copy todir=${builddir} preservelastmodified=true
  <fileset dir=${srcdir}
  <include name=**/*xml />
  <include name=**/*properties />
  </fileset>
  </copy>
  <! =============================================
  <! 據測試資源文件不能被打到jar文件中其余均可
  <! =============================================
  <copy todir=${webclassesdir}/conf preservelastmodified=true
  <fileset dir=${srcdir}/conf
  <include name=springResources*properties />
  </fileset>
  </copy>
  
  <mkdir dir=${weblibdir} />
  
  <jar jarfile=${weblibdir}/${name}jar compress=true
  <fileset dir=${builddir}
  <include name=** />
  </fileset>
  </jar>
  
  <copy todir=${weblibdir} preservelastmodified=true
  
  <fileset dir=${libroot}
  <include name=logjjar />
  </fileset>
  <fileset dir=${libroot}/struts
  <include name=strutsmenujar />
  <include name=strutsjar />
  </fileset>
  <fileset dir=${libroot}/jakartacommons
  <include name=commons*jar />
  </fileset>
  <fileset dir=${libroot}/spring
  <include name=springjar />
  <include name=aopalliancejar />
  </fileset>
  
  
  </copy>
  
  </target>
  
  <! =============================================
  <! Compile main Java sources and copy libraries
  <! =============================================
  <target name=warfile description=Build the web application archive
  
  <mkdir dir=${distdir} />
  <war warfile=${distdir}/${name}war basedir=${wardir} webxml=${wardir}/WEBINF/webxml
  <include name=* />
  <include name=WEBINF/** />
  <exclude name=WEBINF/webxml />
  <include name=WEBINF/classes/** />
  <include name=WEBINF/lib/** />
  <exclude name=**/* />
  </war>
  
  </target>
  
  
   打成war
  
  <target name=warfile description=Build the web application archive
  
  <mkdir dir=${distdir} />
  <war warfile=${distdir}/${name}war basedir=${wardir} webxml=${wardir}/WEBINF/webxml
  <include name=* />
  <include name=WEBINF/** />
  <exclude name=WEBINF/webxml />
  <include name=WEBINF/classes/** />
  <include name=WEBINF/lib/** />
  <exclude name=**/* />
  </war>
  
  </target>
  
   把幾個任務串起來弄一個default target
  
  <target name=all
  <antcall target=clean />
  <antcall target=build />
  <antcall target=warfile />
  </target>
  
  打完收功在實踐中發現一些配置文件如strutsconfigxml ibatis和spring的xml都可以打進jar文件spring資源文件好象不行得單獨copy至WEBINF\classes下另外你的web文件夾下事先得放好webxml以及一些tld文件喲
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28212.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.