標準專案建置腳本
<?xml version="1.0" encoding="utf-8"?>
<project name="tdlphase4" default="dist" basedir=".">
<!-- 屬性定義 -->
<property name="src" value="E:\tdl-phase4\Workspace\TotalJavaSource-JbuilderPJ"/>
<property name="build" value="build"/>
<property name="dist" value="C:\Software\weblogic\myserver\servletclasses"/>
<property environment="env"/>
<property name="Name" value="tdlphase4"/>
<!-- 編譯類別路徑 -->
<path id="java_classpath">
<pathelement path="${env.classpath}"/>
<fileset dir="C:\Software\weblogic\myserver\servletclasses">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- 目標定義 -->
<target name="init">
<tstamp/> <!-- 生成 DSTAMP/TSTAMP -->
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${build}" deprecation="yes">
<classpath refid="java_classpath"/>
</javac>
</target>
<target name="dist" depends="compile">
<jar jarfile="${dist}/${Name}-${DSTAMP}.jar" basedir="${build}"/>
</target>
</project>
關鍵元素解析
| 元素 | 用途 |
<property> | 定義可重用變數,支援環境變數 environment="env" |
<path> | 定義類別路徑、來源路徑等路徑結構 |
<target> | 建置任務單元,depends 定義依賴順序 |
<tstamp> | 生成時間戳屬性:DSTAMP(yyyyMMdd)、TSTAMP(hhmm)、TODAY |
<javac> | 編譯 Java 原始碼,deprecation="yes" 顯示棄用警告 |
<jar> | 打包 JAR,basedir 指定輸入目錄 |
進階擴展建議
- 單元測試整合:加入
<junit> 任務,產生 XML/HTML 報告
- 程式碼品質:整合 Checkstyle、PMD、FindBugs
- 部署自動化:
<copy> 至遠端伺服器、<ssh> 執行重啟腳本
- 版本管理:從 SVN/Git 检出、標籤打標
- 多環境配置:
build-dev.xml、build-prod.xml 覆蓋屬性
最佳實踐
- 使用相對路徑,避免硬編碼絕對路徑
- 將共用屬性提取至
build.properties
- 定義
clean 目標刪除 build/、dist/
- 使用
<mkdir> 確保輸出目錄存在
- 啟用
fork="true" 隔離編譯 JVM