Eclipse集成和調(diào)試Ant工程
摘要:使用Ant來構(gòu)建Java小型或大型項目的好處是不言而喻的。本文展示如何在Eclipse里集成Ant的工程,并配置使能調(diào)試Ant構(gòu)建腳本build.xml和.java源代碼文件。一般我們把使用Ant構(gòu)建的Java項目導(dǎo)入到Eclipse里時,會遇到這個問題:調(diào)試Ant的build.xml腳本和指定使用哪個Ant的任務(wù)(task)來調(diào)試java源代碼文件。
1 快速從0開始搭建Eclipse+Ant環(huán)境
為簡單起見,本文的Eclipse開發(fā)環(huán)境采用nvidia提供的一鍵式組合開發(fā)包Tegra Android Developer Pack(NVPACK),在下面的網(wǎng)址中可以下載你需要的版本:
http://developer.nvidia.com/tegra-resources
我選擇了:Tegra Android Developer Pack 1.0r7,它包含了下面的開發(fā)組件:
- Android SDK r18
- Android NDK r7c
- JDK 6u24
- Cygwin 1.7
- Eclipse 3.7.1
- CDT 8.0.0
- ADT 15.0.0
- Apache Ant 1.8.2
- NVIDIA Debug Manager for Eclipse 12.0.0
- Tegra Sample Code
在Ubuntu下如何安裝這個NVPACK,請參考我的文章:
一鍵解決Ubuntu下安裝Eclipse Android/C/C++ 開發(fā)環(huán)境
2 創(chuàng)建一個簡單的Ant工程
例子工程zebra的目錄結(jié)構(gòu)如下:
- zebra/
- -----build.xml
- +----src/
- +----org/
- +----cheungmine/
- +----study/
- ----Main.java
build.xml的內(nèi)容如下:
- <span style="font-size:12px;color:#333333;"><?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></span>
Main.java的內(nèi)容如下:
- 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 導(dǎo)入Ant工程到Eclipse中
上面的工程在ant下構(gòu)建成功。下面把它導(dǎo)入到Eclipse中。選擇菜單:
Eclipse->File->New->Project...->Java Project from Existing Ant Buildfile
按[Next],在Ant buildfile選擇:<yourpath>\zebra\build.xml
按[Finish]。這樣Ant工程就被導(dǎo)入到Eclipse中了。
在Eclipse的Package Explorer中定位到文件build.xml,在任一行設(shè)置斷點,
菜單Eclipse->Window->Show View->Ant確保Ant和Outline出現(xiàn)在右邊的窗口中。如果Outline中沒有build.xml的內(nèi)容,切換到Ant窗口,選擇Add Buildfiles來加入build.xml,這樣在Outline中就出現(xiàn)了如下面的圖1:
圖1 在Eclipse中調(diào)試build.xml
選擇Outline->exec->右鍵->Debug As->Ant Build,即看到左邊的斷點被調(diào)試執(zhí)行。這個僅僅是調(diào)試Ant的build.xml文件,接下來的方法用來直接調(diào)試Java代碼,本例中是Main.java。
#p#
4 使用Ant構(gòu)建文件作為項目構(gòu)建器
在使用 Eclipse Java IDE 時,默認使用了 Java Builder。每當(dāng)我們保存文件時,Java Builder 就會在后臺默默地運行,并立即對這些文件進行編譯。它是 Eclipse 重大的特性之一:Java Builder 允許我們完全跳過編譯過程,因為我們的程序總是 處于已編譯狀態(tài),即使它充滿了錯誤亦是如此。因此,我們可以在鍵入之后立即運行 Java 程序,無需首先通過一個漫長而乏味的編譯過程。該功能為 Eclipse 用戶省去了大量的時間和爭論,也是 Eclipse 能夠在程序員中廣泛流行的原因之一。
但是如果我們想要做編譯文件以外的事情呢?如果我們想要為整個項目創(chuàng)建一個 jar 文件,并且在每次修改項目時將該文件復(fù)制到一個特定的目錄呢?如果我們想要所有這些都發(fā)生在后臺,無需每次都告訴 Eclipse 呢?我們完全可以坐下來、放松、編寫一些代碼、喝杯咖啡,讓 Eclipse 在后臺處理復(fù)雜的構(gòu)建過程,甚至無需知道這個過程正在后臺進行。
聽起來是不是像做夢呀?不是做夢。我們可以真正做到這樣的事情。我們只需要將一個 Ant 構(gòu)建文件作為“構(gòu)建器” 添加到我們的項目即可,這個構(gòu)建文件中定義了構(gòu)建過程的所有復(fù)雜性。這樣做之后,魔術(shù)將開始上演。
右擊 Package Explorer 視圖中的項目并單擊 Properties(或者:Eclipse菜單->Project->Properties),展開 Builders 并單擊 New,向項目添加一個新的構(gòu)建器MyAntBuilder。添加之后的樣子如下圖2:
圖2 使用Ant構(gòu)建文件作為項目構(gòu)建器
圖3a Ant項目構(gòu)建器Main屬性
圖3b Ant項目構(gòu)建器Refresh屬性
圖3c Ant項目構(gòu)建器Target屬性
在這里,我們選擇構(gòu)建文件何時真正運行,更具體來說,運行哪個目標。有四個選項:
After a "Clean" —— 每當(dāng)我們在項目上執(zhí)行一個清除操作時,目標就會運行。
Manual Build —— 在自動構(gòu)建被關(guān)閉的時候使用該選項。每當(dāng)我們執(zhí)行手動構(gòu)建時,指定的目標就將運行。
Auto-Build —— 每當(dāng)執(zhí)行自動構(gòu)建時,目標就會運行。一般來說,就是每當(dāng)我們保存 Java 文件時。
During a "Clean" —— 該選項與 After a "Clean" 選項不同,因為目標是在清除操作本身期間被調(diào)用。使用該選項在清除操作期間執(zhí)行一些定制的文件清除。
這樣,每次我們Eclipse->Project->Build All / Clean時,Eclipse都是調(diào)用Ant的構(gòu)建器來構(gòu)建項目了。但是仍然不能調(diào)試到Java源代碼中。因此我們需要:
#p#
5 在Eclipse內(nèi)調(diào)試自定義的Ant task
在左邊的Package Explorer中右鍵點擊zebra項目,選擇Build Path->Add External Archives...,選中你的${ANT_HOME}/lib/下的全部jar文件。我這里是:C:\NVPACK\apache-ant-1.8.2\lib\*.jar。
再一次,選擇Build Path->Add External Archives...,選中你的${JAVA_HOME}/lib/下面的tools.jar文件。我這里是:
C:\NVPACK\jdk1.6.0_24\lib\tools.jar。
這些jar都被增加到zebra的Referenced Libraries下面。接下來配置使用Ant的Main來調(diào)試java。進入菜單:Eclipse->Run->Debug Configurations...,在左邊的Java Application下面增加一個設(shè)置:Ant_Main。如圖4:
圖4a Ant項目Debug配置
圖4b Ant項目Debug配置
這樣就表示我們要用Ant的exec這個task來調(diào)試我們的java代碼。如下圖5在Main.java中放置斷點,并啟動Ant_Main來調(diào)試,可以看到Ant任務(wù)后,順利進入代碼中的斷點。
圖5a Eclipse啟動Ant任務(wù)調(diào)試
圖5b Eclipse中調(diào)試Ant工程源碼
原文鏈接:http://blog.csdn.net/cheungmine/article/details/7526146
【編輯推薦】