Eclipse集成和调试Ant工程

开发 后端
使用Ant来构建Java小型或大型项目的好处是不言而喻的。本文展示如何在Eclipse里集成Ant的工程,并配置使能调试Ant构建脚本build.xml和.java源代码文件。一般我们把使用Ant构建的Java项目导入到Eclipse里时,会遇到这个问题:调试Ant的build.xml脚本和指定使用哪个Ant的任务(task)来调试java源代码文件。

摘要:使用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的目录结构如下:

  1. zebra/  
  2.     -----build.xml  
  3.     +----src/  
  4.          +----org/  
  5.               +----cheungmine/  
  6.                    +----study/  
  7.                         ----Main.java 

build.xml的内容如下:

  1. <span style="font-size:12px;color:#333333;"><?xml version="1.0" encoding="UTF-8"?>  
  2. <project name="zebra" default="compile">  
  3.     <description>My first complete build file, including packaging and executing a Java program.</description>  
  4.     <target name="init" description="Create the output directories">  
  5.         <mkdir dir="build/classes"/>  
  6.         <mkdir dir="dist"/>  
  7.     </target>  
  8.  
  9.     <target name="compile" depends="init" description="Compiles into the output directories">  
  10.         <javac srcdir="src" debug="true" destdir="build/classes" includeantruntime="false"></javac>  
  11.     </target>  
  12.  
  13.     <target name="package" depends="compile" description="Creates the JAR package files">  
  14.         <jar destfile="dist/zebra.jar" basedir="build/classes"></jar>  
  15.     </target>  
  16.  
  17.     <target name="clean" description="Delete the output directories">  
  18.         <delete dir="build"/>  
  19.         <delete dir="dist"/>  
  20.     </target>  
  21.       
  22.     <target name="exec" depends="compile" description="Running programs under Ant">  
  23.         <!-- $ java -cp build/classes org.cheungmine.study.Main hello world . -->  
  24.         <java classname="org.cheungmine.study.Main" classpath="build/classes">  
  25.             <arg value="hello"/>  
  26.             <arg value="world"/>  
  27.             <!--   
  28.                 the following arg uses the file attribute, which tells Ant to resolve   
  29.                 that attribute to an absolute file location before calling the program.  
  30.             -->  
  31.             <arg file="."/>  
  32.         </java>  
  33.         <!--  
  34.         <echo level="verbose" message="running"/>  
  35.         <echo level="info" message="running"/>  
  36.         <echo level="warning" message="running"/>  
  37.         <echo level="error" message="running"/>  
  38.         -->  
  39.     </target>  
  40. </project></span>  

Main.java的内容如下:

  1. package org.cheungmine.study;  
  2. public class Main {  
  3.    &nbsp;public static void main(String args[]) {  
  4.        &nbsp;System.out.println("org.cheungmine.study");  
  5.         for(int i=0; i<args.length; i++) {  
  6.            &nbsp;System.out.println(args[i]);  
  7.        &nbsp;}  
  8.     }  

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

【编辑推荐】

  1. MyEclipse 10 中增加svn插件
  2. 在Eclipse中使用JSHint检查JavaScript
  3. Eclipse即将发布基于浏览器的IDE
  4. 25个让Java程序员更高效的Eclipse插件
  5. 为何IntelliJ IDEA比Eclipse更好
责任编辑:林师授 来源: cheungmine的博客
相关推荐

2011-09-13 17:44:00

Eclipse And

2012-02-20 14:41:30

JavaPlay Framew

2009-06-11 13:28:18

Glassfish集成

2010-06-09 11:27:46

Eclipse UML

2009-06-02 10:02:50

eclipse jboeclipse jbojboss for e

2011-05-31 15:35:04

Android Ant

2012-02-02 15:14:29

Node.js

2009-06-03 14:42:21

Eclipse调试调试Java程序

2010-07-07 09:11:31

Eclipse UML

2010-05-08 17:22:03

Black Berry

2011-09-15 09:21:46

持续集成

2013-04-10 09:46:29

EclipseJava

2011-02-22 16:09:53

Eclipse调试

2010-07-11 00:24:50

EclipsePHPPDT

2020-05-25 15:40:23

IntelliJ IDEclipse强Java

2022-10-25 22:09:58

Designreactantd

2010-08-05 09:13:22

EclipseFlexBuilder

2014-01-07 10:36:32

EclipsSpark

2011-02-23 09:35:25

Eclipse远程调试

2013-07-29 14:23:55

Eclipse开发环境Eclipse开发环境
点赞
收藏

51CTO技术栈公众号