Eclipse集成和調試Ant工程
摘要:使用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,它包含了下面的開發組件:
- 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++ 開發環境
2 創建一個簡單的Ant工程
例子工程zebra的目錄結構如下:
- zebra/
- -----build.xml
- +----src/
- +----org/
- +----cheungmine/
- +----study/
- ----Main.java
build.xml的內容如下:
- <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的內容如下:
- 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。
#p#
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:
圖2 使用Ant構建文件作為項目構建器
圖3a Ant項目構建器Main屬性
圖3b Ant項目構建器Refresh屬性
圖3c Ant項目構建器Target屬性
在這里,我們選擇構建文件何時真正運行,更具體來說,運行哪個目標。有四個選項:
After a "Clean" —— 每當我們在項目上執行一個清除操作時,目標就會運行。
Manual Build —— 在自動構建被關閉的時候使用該選項。每當我們執行手動構建時,指定的目標就將運行。
Auto-Build —— 每當執行自動構建時,目標就會運行。一般來說,就是每當我們保存 Java 文件時。
During a "Clean" —— 該選項與 After a "Clean" 選項不同,因為目標是在清除操作本身期間被調用。使用該選項在清除操作期間執行一些定制的文件清除。
這樣,每次我們Eclipse->Project->Build All / Clean時,Eclipse都是調用Ant的構建器來構建項目了。但是仍然不能調試到Java源代碼中。因此我們需要:
#p#
5 在Eclipse內調試自定義的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來調試java。進入菜單:Eclipse->Run->Debug Configurations...,在左邊的Java Application下面增加一個設置:Ant_Main。如圖4:
圖4a Ant項目Debug配置
圖4b Ant項目Debug配置
這樣就表示我們要用Ant的exec這個task來調試我們的java代碼。如下圖5在Main.java中放置斷點,并啟動Ant_Main來調試,可以看到Ant任務后,順利進入代碼中的斷點。
圖5a Eclipse啟動Ant任務調試
圖5b Eclipse中調試Ant工程源碼
原文鏈接:http://blog.csdn.net/cheungmine/article/details/7526146
【編輯推薦】