Eclipse中整合和調試Ant工程
cheungmine
2012-5-01
摘要:使用Ant來構建Java小型或大型項目的好處是不言而喻的。本文展示如何在Eclipse裡整合Ant的工程,並配置使能調試Ant構建指令碼build.xml和.java原始碼檔案。一般我們把使用Ant構建的Java項目匯入到Eclipse裡時,會遇到這個問題:調試Ant的build.xml指令碼和指定使用哪個Ant的任務(task)來調試java原始碼檔案。
1 快速從0開始搭建Eclipse+Ant環境
為簡單起見,本文的Eclipse開發環境採用nvidia提供的一鍵式組合開發包Tegra Android Developer Pack(NVPACK),在下面的網址中可以下載你需要的版本:
http://developer.nvidia.com/tegra-resources
我選擇了:Tegra Android Developer Pack 1.0r7,它包含了下面的開發組件:
在Ubuntu下如何安裝這個NVPACK,請參考我的文章:
一鍵解決Ubuntu下安裝Eclipse Android/C/C++ 開發環境
2 建立一個簡單的Ant工程
例子工程zebra的目錄結構如下:
zebra/ -----build.xml +----src/ +----org/ +----cheungmine/ +----study/ ----Main.java
build.xml的內容如下:
<?xml version="1.0" encoding="UTF-8"?><project name="zebra" default="compile"> <description>My first complete build file, including packaging and executing a Java program.</description> <target name="init" description="Create the output directories"> <mkdir dir="build/classes"/> <mkdir dir="dist"/> </target> <target name="compile" depends="init" description="Compiles into the output directories"> <javac srcdir="src" debug="true" destdir="build/classes" includeantruntime="false"></javac> </target> <target name="package" depends="compile" description="Creates the JAR package files"> <jar destfile="dist/zebra.jar" basedir="build/classes"></jar> </target> <target name="clean" description="Delete the output directories"> <delete dir="build"/> <delete dir="dist"/> </target> <target name="exec" depends="compile" description="Running programs under Ant"> <!-- $ java -cp build/classes org.cheungmine.study.Main hello world . --> <java classname="org.cheungmine.study.Main" classpath="build/classes"> <arg value="hello"/> <arg value="world"/> <!-- the following arg uses the file attribute, which tells Ant to resolve that attribute to an absolute file location before calling the program. --> <arg file="."/> </java> <!-- <echo level="verbose" message="running"/> <echo level="info" message="running"/> <echo level="warning" message="running"/> <echo level="error" message="running"/> --> </target></project>
Main.java的內容如下:
package org.cheungmine.study;public class Main { public static void main(String args[]) { System.out.println("org.cheungmine.study"); for(int i=0; i<args.length; i++) { System.out.println(args[i]); } }}
3 匯入Ant工程到Eclipse中
上面的工程在ant下構建成功。下面把它匯入到Eclipse中。選擇菜單:
Eclipse->File->New->Project...->Java Project from Existing Ant Buildfile
按[Next],在Ant buildfile選擇:<yourpath>\zebra\build.xml
按[Finish]。這樣Ant工程就被匯入到Eclipse中了。
在Eclipse的Package Explorer中定位到檔案build.xml,在任一行設定斷點,
菜單Eclipse->Window->Show View->Ant確保Ant和Outline出現在右邊的視窗中。如果Outline中沒有build.xml的內容,切換到Ant視窗,選擇Add Buildfiles來加入build.xml,這樣在Outline中就出現了如下面的圖1:
圖1 在Eclipse中調試build.xml
選擇Outline->exec->右鍵->Debug As->Ant Build,即看到左邊的斷點被調試執行。這個僅僅是調試Ant的build.xml檔案,接下來的方法用來直接調試Java代碼,本例中是Main.java。
4 使用 Ant 構建檔案作為項目構建器
在使用 Eclipse Java IDE 時,預設使用了 Java Builder。每當我們儲存檔案時,Java Builder 就會在後台默默地運行,並立即對這些檔案進行編譯。它是 Eclipse 重大的特性之一:Java Builder 允許我們完全跳過編譯過程,因為我們的程式總是 處於已編譯狀態,即使它充滿了錯誤亦是如此。因此,我們可以在鍵入之後立即運行 Java 程式,無需首先通過一個漫長而乏味的編譯過程。該功能為 Eclipse 使用者省去了大量的時間和爭論,也是 Eclipse 能夠在程式員中廣泛流行的原因之一。
但是如果我們想要做編譯檔案以外的事情呢?如果我們想要為整個項目建立一個 jar 檔案,並且在每次修改項目時將該檔案複製到一個特定的目錄呢?如果我們想要所有這些都發生在後台,無需每次都告訴 Eclipse 呢?我們完全可以坐下來、放鬆、編寫一些代碼、喝杯咖啡,讓 Eclipse 在幕後處理複雜的構建過程,甚至無需知道這個過程正在後台進行。
聽起來是不是像做夢呀?不是做夢。我們可以真正做到這樣的事情。我們只需要將一個 Ant 構建檔案作為“構建器” 添加到我們的項目即可,這個構建檔案中定義了構建過程的所有複雜性。這樣做之後,魔術將開始上演。
右擊 Package Explorer 視圖中的項目並單擊 Properties(或者:Eclipse菜單->Project->Properties),展開 Builders 並單擊 New,向項目添加一個新的構建器MyAntBuilder。添加之後的樣子如下圖2: