前言 ant是java開發者工具箱的重要一環
junit
xdoclet等都與它緊密關聯
程序員可能習慣了IDE提供的自動構建
甚至部署的功能
從而忽略了ant本身
其實
主流的IDE通常是內置ant任務來完成這些工作的
熟悉ant內在的機理
可以閱讀或簡單修改build
xml無疑可以幫助你更靈活地集成
管理應用項目
如果需要學習maven這種開源項目管理解決方案
也是要以理解ant為基礎的喲
另外
使用ant的過程實際上對構建進行了文檔化
它是無關於IDE的
想象一下
你的同事中可能三分之一在用JbuilderX
三分之一用eclipse
還有一些是別的
本人使用eclipse
以前的構建和發布工作都由myeclipse插件作了
趁周末實踐了一下手動構建
記此備忘
實踐 准備工作
這是我的個人習慣
把所有公用的類庫jar置於一個固定目錄
分好類
不要丟在一個文件夾下
如jakarta
commons
hibernate
spring
struts等
這些是源碼構建時需要用到的
在部署時可能有一些不用再打進去了
比如servlet
jar
如果你們有自己的framework
也一並放在這裡
然後
打開eclipse
進入Windows
>Preferences
>Java
>User Libraries
增加一個自己的庫
比如說mylib
把剛才那些公共的jar全部添入
這樣有個好處
在eclipse項目中
不用再看到煩人的長長的jar列表了
比較整潔
下來正式進行
新建一個Java Project
此時就不要再選你的j
ee插件內置的一些選項了
至簡即可
在root下建幾個文件夾
我們在網上下載的開源項目中經常可以看到這些
比如
src
源碼
classes
編譯
web
jsp等
lib
庫
這裡可以簡單地把mylib下的東東copy過來
便於將來發布源碼
dlist
輸出的jar或war
當然
我們要建一個build
xml
eclipse中會出現一個螞蟻的小圖標
一般這個文件建立後
下一個項目簡單的copy過去
稍加改動就可以了
打開項目的屬性頁
在Java Build Path的庫選項中
加入我們自定義的公共庫mylib
至於Builders方式就不用改了
使用默認的Java Builer即可
我只是項目部署時使用ant
平常的排錯工作就交給IDE吧
重中之重
寫你的build
xml
網上文章很海
我這裡就不再啰嗦了
基本上就分那幾個任務
先要聲明一些路徑變量
如
<property name=
war
dir
value=
dlist
/>
也可以將其寫至properties文件中
在這裡引用;
聲明編譯的類路徑
如下:
<path id=
master
classpath
>
<fileset dir=
${lib
root}/struts
>
<include name=
struts
menu
jar
/>
<include name=
struts
jar
/>
</fileset>
<fileset dir=
${lib
root}/jakarta
commons
>
<include name=
commons
*
jar
/>
</fileset>
<fileset dir=
${lib
root}/ibatis
>
<include name=
ibatis
*
jar
/>
</fileset>
<fileset dir=
${lib
root}/jdbcdriver
>
<include name=
jtds
rc
jar
/>
</fileset>s
</path>
清空輸出目錄
如web
dlist等
編譯構建:
<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=
target=
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=
log
j
jar
/>
</fileset>
<fileset dir=
${lib
root}/struts
>
<include name=
struts
menu
jar
/>
<include name=
struts
jar
/>
</fileset>
<fileset dir=
${lib
root}/jakarta
commons
>
<include name=
commons
*
jar
/>
</fileset>
<fileset dir=
${lib
root}/spring
>
<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>
打成war
<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>
把幾個任務串起來
弄一個default target
<target name=
all
>
<antcall target=
clean
/>
<antcall target=
build
/>
<antcall target=
warfile
/>
</target>
打完收功
在實踐中發現
一些配置文件
如struts
config
xml ibatis和spring的xml都可以打進jar文件
spring資源文件好象不行
得單獨copy至WEB
INF\classes下
另外
你的web文件夾下
事先得放好web
xml
以及一些tld文件喲
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28212.html