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

Ant 實戰教程:從入門到多模組專案建構最佳實踐

     編輯:J2ME

什麼是 Ant?

Ant 是基於 Java 的跨平台建構工具。對比 Make:語法更簡潔 (XML)、跨平台、功能更強大、可透過開發自定義 Task 擴充。

環境建置四步驟

  1. 安裝 JDK,設定 JAVA_HOME、PATH、CLASSPATH
  2. 下載 Ant:https://www.apache.org/,解壓至簡單路徑 (如 D:\ant-1.6)
  3. 設定 ANT_HOME,將 %ANT_HOME%\bin 加入 PATH
  4. 驗證:CMD 執行 ant,顯示 Buildfile: build.xml does not exist! 即成功

Hello World 級建構腳本

專案結構

project/
├── build.xml
└── src/
    └── test/
        └── ant/
            └── HelloWorld.java

HelloWorld.java

package test.ant;
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world1");
    }
}

build.xml 完整版

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="run" basedir=".">
    <property name="src" value="src"/>
    <property name="dest" value="classes"/>
    <property name="hello_jar" value="hello1.jar"/>

    <target name="init">
        <mkdir dir="${dest}"/>
    </target>

    <target name="compile" depends="init">
        <javac srcdir="${src}" destdir="${dest}"/>
    </target>

    <target name="build" depends="compile">
        <jar jarfile="${hello_jar}" basedir="${dest}"/>
    </target>

    <target name="run" depends="build">
        <java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
    </target>

    <target name="clean">
        <delete dir="${dest}"/>
        <delete file="${hello_jar}"/>
    </target>

    <target name="rerun" depends="clean,run">
        <ant target="clean"/>
        <ant target="run"/>
    </target>
</project>

核心概念解析

  • <project>:根元素,default 指定預設目標,basedir 為工作根目錄
  • <property>:變數定義,${var} 引用
  • <target>:任務單元,depends 宣告依賴,Ant 自動按拓撲序執行
  • <javac>/<jar>/<java>/<delete>/<mkdir>:內建 Task

常用指令

ant              # 執行 default target (run)
ant build        # 僅打包 JAR
ant clean        # 清理產出物
ant rerun        # 清理後完整重建並執行

進階:多模組專案整合建構

場景

三個小組各自維護模組 (src1/src2/src3),各有獨立 build.xml。主專案需整合打包。

主 build.xml (調用子專案)

<project name="main" default="build" basedir=".">
    <property name="bin" value="${basedir}\bin"/>
    <property name="src1" value="${basedir}\src1"/>
    <property name="src2" value="${basedir}\src2"/>
    <property name="src3" value="${basedir}\src3"/>

    <target name="init">
        <mkdir dir="${bin}"/>
    </target>

    <target name="run">
        <ant dir="${src1}" target="run"/>
        <ant dir="${src2}" target="run"/>
        <ant dir="${src3}" target="run"/>
    </target>

    <target name="clean">
        <ant dir="${src1}" target="clean"/>
        <ant dir="${src2}" target="clean"/>
        <ant dir="${src3}" target="clean"/>
    </target>

    <target name="build" depends="init">
        <copy todir="${bin}">
            <fileset dir="${src1}"><include name="*.jar"/></fileset>
            <fileset dir="${src2}"><include name="*.jar"/></fileset>
            <fileset dir="${src3}"><include name="*.jar"/></fileset>
        </copy>
    </target>

    <target name="rebuild" depends="clean,build"/>
</project>

配置外部化:Properties 檔與 XML Include

1. all.properties 提取路徑配置

src1=D:\study\ant\src1
src2=D:\study\ant\src2
src3=D:\study\ant\src3
<property file="all.properties"/>

2. include.xml 共享 Property 與 Target

<?xml version="1.0" encoding="UTF-8"?>
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<target name="test">
    <ant target="run"/>
</target>

子專案 build.xml 引入:

<!DOCTYPE project [
    <!ENTITY share-variable SYSTEM "file:../include.xml">
]>
<project ...>
    &share-variable;
    <property name="hello_jar" value="hello1.jar"/>
    ...原有 target...
</project>
修改 include.xml 即可同步更新所有子專案的共用屬性與目標,維護極致簡便。

實用進階 Task 範例

CVS 檢出 (遠端伺服器)

<property name="cvsroot" value=":pserver:wang:@192.168.1.2:/cvsroot"/>
<property name="cvs.password" value="wang"/>
<property name="cvs.passfile" value="${basedir}/ant.cvspass"/>

<target name="initpass">
    <cvspass cvsroot="${cvsroot}" password="${cvs.password}" passfile="${cvs.passfile}"/>
</target>

<target name="checkout" depends="initpass">
    <cvs cvsroot="${cvsroot}" command="checkout" cvsrsh="ssh"
         package="myproject" dest="${basedir}" passfile="${cvs.passfile}"/>
</target>

Eclipse 整合 Ant

Eclipse 內建 Ant 支援:新建專案 → 建立 build.xml → 享受語法提示、自動完成、大綱視圖。強烈建議在 Eclipse 中編寫/維護 Ant 腳本。

學習資源建議

  1. 研讀開源專案的 build.xml (Spring、Hibernate、Struts 等)
  2. 官方文檔:https://ant.apache.org/manual/,Task 參考極詳盡
  3. Google 搜尋特定需求
Ant 掌握度與實戰經驗成正比。從簡單腳本開始,逐步引入依賴管理、多模組整合、配置外部化、自定義 Task,將建構腳本打磨為專案自動化的核心資產。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved