Apache Ant被视为Java™开发世界中构建工具的圣杯。 大多数有价值的Java项目都以Ant构建脚本的形式附加了一些自定义构建过程。 因此,每个有价值的Java IDE都必须为Ant内置某种支持。 Eclipse是最受欢迎的IDE,它不会让人失望:它为Ant提供了广泛的内置支持。
了解如何利用Eclipse中提供的功能来编写和调试Ant文件,以及如何将Ant文件用作构建器。
本教程假定您具有创建Ant脚本和使用Eclipse平台的基本知识。
要尝试这些示例,您需要运行在Java虚拟机(JVM)V1.4或更高版本上的Eclipse.org的Eclipse SDK 。 从Sun Microsystems或从IBM下载Java技术。
首先向您的项目中添加一个新的Ant文件,该文件将在本教程的其余部分中使用:
打开包浏览器 右键单击任何Java项目,然后单击“ 新建”>“文件” 在“新建文件”窗口中,输入build.xml作为文件名。创建文件,然后打开Ant编辑器。 现在,向文件中添加一些内容。 单击编辑器中的任意位置,然后按Ctrl + Space 。 将出现一个完成建议,其中包含一个称为Buildfile模板的选项-具有两个目标的简单buildfile(请参见图1)。 单击此按钮可将包含两个目标的示例项目添加到文件中。
现在我们有了一些内容,让我们仔细看一下Ant编辑器。
发现最佳的Ant编辑器功能:突出显示,代码完成,折叠,重命名以及标记事件和问题。
为了易于使用,编辑器以不同的颜色显示构建文件的每个元素。 注释以与属性不同的颜色显示,依此类推。 您甚至可以为每种元素类型自定义颜色。
要更改突出显示的颜色,请完成以下步骤:
单击窗口>首选项>蚂蚁>编辑器 单击语法选项卡 在结果页面上,为每种元素类型选择颜色Ant编辑器提供了全面的代码完成功能,可帮助您快速键入Ant构建文件。 在目标定义内单击,然后按Ctrl + Space以查看所有可用任务的列表。 选择任务后,编辑器将自动插入开始和结束标签(参见图2)。
但这还不是全部。 Ant编辑器的代码完成功能远远超出了自动标记插入的范围。 编辑器知道我们构建文件中定义的目标。 因此,例如,当我们要插入目标名称时,例如,键入项目的default属性或目标的depends属性,按Ctrl + Space会显示我们可以填写的所有可用目标的列表(参见图3)。
编辑器甚至知道我们构建文件中定义的属性。 因此,当我们键入属性的值时,在键入初始的$ (美元符号)之后,我们可以按Ctrl + Space来查看构建文件中定义的所有属性和所有系统属性的列表(参见图4)。 。
Ant编辑器中的另一个代码完成功能是代码模板(参见图5)。 当我们使用Buildfile模板将示例内容添加到我们的buildfile时,我们使用了此方法。 Ant编辑器中提供了几个模板,有了它们,我们可以快速输入目标定义,属性定义等。 请注意,在应用模板之后,编辑器自动填写的部分文本上会出现一个框(请参见图6)。 这些盒子本质上是为了填补空白 。 它们允许我们键入文本,例如目标名称及其依赖项。 我们可以使用Tab键在模板中的空白之间循环。
Ant编辑器可以折叠我们构建文件中的所有可扩展标记语言(XML)元素。 只需单击左侧的+或-按钮即可展开或折叠各种元素。 此功能很有用,因为有了它,我们可以快速了解文件的内容。 如果将鼠标悬停在+图标上,则上下文窗口将显示元素的内容。
Ant编辑器的一项真正出色的功能是“文件重命名”功能。 使用此方法,我们可以在整个文件中重命名目标名称和属性名称(请参见图7)。 举例来说,我们要重命名目标。 右键单击名称,然后单击“ 在文件中重命名” 。 在引用了目标名称的文件中,会出现方框。 现在我们可以编辑目标的名称,更改将反映在整个文件中。 此功能甚至适用于属性名称。
单击顶部的“ 切换标记出现次数”按钮可以打开或关闭“标记出现次数”功能。 启用此功能后,当我们单击任何目标或属性的名称时,突出显示了整个文件中该目标或属性的所有出现(请参见图8)。
单击“ 仅显示选定的元素”按钮(参见图9),仅显示单击的元素。 当我们必须编写一个大的目标定义并且我们不想看到任何混乱时,此功能特别有用。 我们可以单击此按钮以使其余文件元素消失-因此,使我们仅专注于该目标。
键入时,Ant编辑器可以在构建文件中显示错误和警告。 这有助于轻松地及早发现构建文件中的错误和潜在错误,而不是稍后弄清楚为什么在构建过程中会遇到神秘错误。
要实际使用此功能,请转至build.xml中的project标签。 在default目标的值中,键入构建文件中不存在的目标的名称。 一个project标签出现在带有红色波浪形标记的下划线(请参见图10)。 将鼠标悬停在标记上,将出现一个窗口,指示项目中不存在默认目标。 红色X图标出现在标记的左侧。
还要注意编辑器窗口右侧的栏。 这将显示文件中的所有错误和警告。 一旦文件中出现错误或警告,就会在条形图的大约位置放置一个相应的红色或黄色标记。 单击标记以导航到错误的位置。 这使我们可以很好地了解文件中出现的位置和错误或警告数量,并且我们可以轻松导航到它们。 如果文件中存在错误,则栏顶部还会有一个正方形变为红色。 因此,仅需看一下正方形,就可以立即确定文件是否正确。
通过完成以下步骤,我们可以更改Ant编辑器处理问题的方式:
单击窗口>首选项 展开Ant,然后展开编辑器 在“首选项”窗口中,单击“ 问题”选项卡(请参见图11)。注意:此栏还可以与“标记出现”功能一起使用。 打开“标记出现”,然后单击任何目标名称。 条形图中与每个参考位置相对应的黄色标记很少。 单击标记以导航到参考。
Eclipse提供了几种方法来帮助轻松导航巨大的构建文件。 示例包括超链接和功能键导航,以及两个视图:Outline和Ant。
按Ctrl键,然后将鼠标悬停在任何目标或属性的名称上。 该名称变为超链接(请参见图12)。 单击它会将我们带到目标或属性的声明。
我们也可以按F3转到目标或属性的声明。 我们可以通过以下方法更改快捷键:展开“常规”,然后展开“键”以访问“键”首选项页面。
顾名思义,Outline视图显示了构建文件的整个轮廓(请参见图13)。 我们可以轻松查看文件中定义的所有目标和属性。 内部目标和公共目标具有不同的图标,因此易于区分。 甚至默认目标也会突出显示。 展开任何目标都会显示其中的所有任务。 单击“大纲”视图中的任何元素以直接导航到该元素。 该视图顶部有几个按钮,我们可以通过它们进行过滤-对项目进行排序或隐藏内部目标,属性,导入的元素和顶级元素。
我们还可以直接在“大纲”视图中运行和调试目标。 为此,请在Outline视图中右键单击一个目标,然后单击Run As (或Debug As ) > ANT Build 。
很多时候,您会发现自己在多个项目中使用多个脚本。 因此,Eclipse员工创建了Ant视图来保持整个混乱状态,而不是在Navigator或Package Explorer视图中寻找构建文件,或者在External Tools工具栏列表中进行挖掘(请参见图14)。
首先,通过单击窗口>显示视图>其他>蚂蚁>蚂蚁打开蚂蚁视图。 首次打开该视图时,该视图为空白,因此必须向其中添加一些构建文件。 单击+按钮将打开一个窗口,我们可以在其中从工作区中打开的项目中选择构建文件。 选择它并点击或运行通过右键单击目标,然后单击为> Ant构建运行运行的目标。
我们还可以使用Ant的搜索功能添加构建文件。 单击工具栏上的Flashlight图标,将出现一个窗口,我们可以在其中指定要搜索的文件名。 使用特殊字符,例如* (星号)或? 文件名中的(问号)分别代表任何字符串或任何字符 。 例如,键入build*.xml匹配所有以单词build开头的XML文件名。 如果我们未选中包括包含错误的构建文件复选框,则不会选择包含错误的文件。 最后,我们可以选择在整个工作空间中还是仅在工作集中进行搜索。
要从Ant视图中删除文件,请选择它,然后单击Remove 。 单击全部删除以清除整个视图。
许多人在初次查看Ant视图时,会将其误认为是包含多个文件的Outline视图。 但是,视图之间存在一些细微的差异。 虽然Outline视图旨在帮助我们浏览当前文件,但Ant视图使我们能够管理可能分散在整个工作空间中的多个构建脚本中多个目标的运行和调试。
当我们仔细查看两个视图中提供的功能时,这种基本差异变得更加明显:
我们可以将多个文件添加到Ant视图中,而Outline视图仅显示当前文件的轮廓。 在“大纲”视图中双击目标可以使我们导航到编辑器中的相应声明,但是在Ant视图中这样做实际上可以运行目标。 Ant视图不显示任何属性或顶级元素,因为我们无法“运行”属性。 “大纲”视图和“蚂蚁”视图都包含“ 隐藏内部目标”按钮,我们可以单击“ 隐藏内部目标”按钮来隐藏所有非公共目标,但是视图为不同目的提供了此按钮。 因此,尽管Outline视图仅提供此按钮作为过滤视图的另一种方式,而Ant视图却提供了此按钮,因为由于我们通常仅运行公共目标,因此有必要从视图中隐藏内部目标。是的,您没有看错。 实际上,您可以像调试Java文件一样在Eclipse中调试Ant文件,并具有所有可用的标准调试功能。 这可能是Eclipse Ant集成中最好的功能。
就像我们通常使用Java文件一样,将断点放在目标内的目标行上,这些行调用我们感兴趣的任务。 要将断点放在一行上,只需在左侧灰色条上的行旁边双击即可。 出现绿色球,表示已设置断点(请参见图15)。 通过单击断点或在“断点”视图中禁用它们来临时启用或禁用断点。 禁用的断点显示为白球。 请注意,与Java断点不同,我们不能在断点上设置命中数或条件-不管怎么说,在调试Ant文件时我们将不需要它们。
现在,开始调试。 在Ant视图或Outline视图中右键单击目标,然后单击Debug As> Ant Build 。 与Java文件一样,当执行到达设置断点的那一行时,构建文件也会暂停。
很棒的部分是:单击Debug视图中的Step Over按钮,逐步浏览buildfile中的各行,就像我们逐步浏览Java语句一样(参见图16)。 在逐步执行每个任务时,将执行该任务并产生其输出,我们可以检查这些输出以查看构建过程中出了什么问题。 运行到行功能也可用,因此我们可以右键单击一行,然后单击运行到行 ,以继续执行构建文件,直到到达特定行为止。 该过程类似于在到达该行后立即删除的行上设置临时断点。
调试视图显示当前正在执行的任务的调用堆栈。 如果任务调用另一个目标(例如antcall ),则该目标将出现在调用堆栈中当前任务的上方。
还可以使用“变量”视图(请参见图17)。 打开此视图以查看所有Ant属性,这些属性与Ant等效。 显示的属性分为三个部分:
系统属性:从系统为构建设置的属性 用户属性:属性,例如使用-D选项设置的属性 运行时属性:在运行时设置的构建文件中定义的属性请注意,与Java调试器不同,Ant调试器不允许我们更改“变量”视图中显示的属性的值。
当我们使用Eclipse Java IDE时,我们会不自觉地使用Java Builder。 Java Builder是一种无声的野兽,每次我们保存文件时都会在后台运行,并且会立即对其进行编译。
尽管这似乎没什么大不了,但这是Eclipse最令人惊奇的功能之一:Java Builder允许我们完全跳过编译过程,因为我们的程序始终处于编译状态,即使它可能充满错误。 因此,我们可以在键入Java程序后立即运行我们的Java程序,而无需先经过冗长而繁琐的编译步骤。 此功能为Eclipse用户节省了大量时间和麻烦,并且是Eclipse在程序员中如此流行的原因之一。
但是,如果我们想做的不仅仅是编译文件,该怎么办? 如果我们想为整个项目创建一个jar文件,并在每次对项目进行更改时将其复制到某个目录怎么办? 如果我们希望所有这些事情在后台发生而又不必每次都告诉Eclipse,该怎么办? 我们可以坐下来,放松一下,编写一些代码,喝杯咖啡,然后让Eclipse在后台处理复杂的构建过程,甚至不需要知道它实际上正在发生。
听起来像梦吗? 不是。 我们实际上可以做到这一点。 我们只需要向我们的项目中添加一个Ant构建文件,该文件具有其中定义的构建过程的所有复杂性,就可以称为“构建器”。 这样做,魔术就会开始发生。
假设我们有一个Ant构建文件,该文件从项目中的类文件中创建一个jar文件,并将jar文件放置在项目的根目录中。 (目前为止,构建文件的确切内容是无关紧要的。)我们希望每次修改Java文件时都运行该构建文件,因此jar文件始终保持最新状态。 完成以下步骤:
在Package Explorer视图中右键单击该项目,然后单击Properties 。 展开Builders,然后单击New将新的Builder添加到项目中。 在出现的窗口中,选择Ant Build ,然后单击OK 。 将显示构建器的“属性”窗口(请参见图18)。 在这里,配置一个构建器。现在是时候测试我们新添加的构建器了。 打开我们项目中的任何Java文件,进行一些修改(例如,插入一个空格),然后保存它。 自动构建将运行,我们将在控制台中看到构建文件正在运行所选目标。 jar文件已构建,并显示在“导航器和包资源管理器”视图中。 所有这些都会自动发生。
您已经看到Eclipse为编写,调试和导航Ant构建脚本提供了一个强大的环境。 它甚至允许您将Ant用作项目构建器,以便您的Ant文件可以在后台自动执行。 现在,您准备开始在Eclipse中编写构建脚本。
我建议您编写一个Ant构建脚本并将其用作项目构建器,以亲自探索上述功能。 另外,不要忘记将Ant参考手册放在身边,以查看编写构建脚本时对您可用的所有任务的描述。
翻译自: https://www.ibm.com/developerworks/opensource/tutorials/os-ecl-easyant/index.html
相关资源:eclipse中如何使用ANT