首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Ant 持續整合實戰:從 build.xml 結構到夜間構建最佳實踐

     編輯:Java 相關知識

Ant 作為 Java 領域最經典的構建工具,掌握其核心概念(Project、Target、Property、FileSet、Filter)與目標命名慣例,是實現持續整合、夜間構建的基礎。本文結合《Java極限編程》讀書筆記,系統整理 Ant 實戰要點。

標準目標命名慣例(Steve Loughran 推薦)

層級目標名用途
Top-levelclean清空輸出目錄
fetch從 CVS/SVN 獲取最新原始碼
build編譯、打包
test運行 JUnit 測試
docs / javadocs生成文檔
deploy部署 JAR/WAR 到執行環境
publish發布原始碼與二進制到發布站點
all依賴 clean, fetch, build, test, docs, deploy,一鍵全流程
main預設構建(常為 build 或 build,test)
Internalinit初始化屬性、讀取 property 檔
init-debug初始化除錯屬性
init-release初始化發布屬性
compile實際編譯任務
link/jar建立 JAR/WAR 等成品
staging預部署並測試

條件化目標執行

<target name="setupProduction" if="production"/>
<target name="setupDevelopment" unless="production"/>

命令列觸發:

ant -buildfile build.xml -Dproduction=true

FileSet 與 Path 靈活配置

<property name="lib" value="../lib"/>
<property name="outputdir" value="/tmp"/>

<!-- 方式 1:嵌套 pathelement -->
<path id="classpath1">
  <pathelement location="."/>
  <pathelement location="${lib}/log4j.jar"/>
</path>

<!-- 方式 2:path 屬性 -->
<path id="classpath2">
  <pathelement path=".;${lib}/log4j.jar"/>
</path>

<!-- 方式 3:fileset 掃描 -->
<path id="classpath3">
  <pathelement location="."/>
  <fileset dir="${lib}">
    <include name="**/*.jar"/>
  </fileset>
</path>

<target name="compile">
  <javac destdir="${outputdir}/classes" srcdir="./src">
    <classpath refid="classpath3"/>
  </javac>
</target>

Filter 過濾器:屬性替換

<filter token="jdbc_url" value="jdbc:oracle:thin:@dev:1521:devdb"/>

配合 <copy filtering="true"> 可在部署時自動替換配置檔中的 @jdbc_url@。

巢狀構建與屬性管理

<property name="production" value="true"/>
<ant antfile="sub-build.xml" inheritAll="false"/>

夜間構建價值

  • 自動編譯、測試、生成 HTML 報告、發送郵件通知開發人員。
  • 隔天一早即可知構建失敗原因,快速進入工作狀態。
  • 呼應 Kent Beck《測試驅動開發》觀點:下班前不強求完成,保留上下文,隔天高效接續。
期待 IDE 能提供圖形化 build.xml 編輯器(如早期 NetBeans 的 properties 編輯器),降低 XML 手寫負擔。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved