本章目标:规划Ant项目的目录结构以及Ant构建常用命令行选项
1.规划Ant项目结构:
构建文件已经开始编译Java文件了,但是构建的过程十分混乱。源代码,输出文件以及构建文件自身都被堆放在同一个目录中。如果项目稍微变得大一些,局面将会失控。在这件事发生之前,我们需要规划一下构建文件的结构。我们要规划出来的结构在Ant中非常普遍。做这种规划的动力是希望可以对项目进行下面的三种改变。
a)我们希望Ant可以自动清理。如果不能正确地自动清理,那么可能会连带删除Java源代码文件。为了把风险降到最低,你应该把源代码和生成的文件分别放到不同的目录中。
b)我们希望把Java源代码文件放入到Java包中。
c)我们希望创建一个由已编译出的代码构成的JAR文件。它应该放到可以被Ant安全地清理掉的地方。
为了在构建过程中加入对打包和清理的支持,我们必须将源代码,中间文件以及最终文件隔离开。一旦将源代码与生成的文件隔离开,Ant就可以在最后的时间里通过删除输出目录,安全地清理输出内容。由此就简化了清理构建的工作。这样做比把它们混在一起处理更可靠,因为将它们分开后,源代码文件就不可能混入到中间输出的文件中了。养成清理构建的习惯是有好处的。
Ant项目应该把源代码文件,编译类文件和发布包放到不同的目录中。这样更容易在构建过程中管理它们
目录名 |
功能 |
src |
源代码文件 |
build |
所有在构建过程中生成的文件,它们可以被删除并重新创建 |
build/classes |
中间输出文件(可重建;可删除) |
dist |
待发布文件(可重建;可删除) |
2.Ant命令行选项
-buildfile |
这个选项可以控制Ant使用哪个构建文件,它允许你将多个项目的目标分到多个文件中,并且根据要做的事情选择适当的构建。-f是-buildfile的快捷方式。 |
-find |
它后面必须跟着构建文件的名字。这个选项会做一些非常独特的事情:它会在目录树中搜索,在父目录中找到第一个名称相符的构建文件,然后调用它。当你深入到源代码树中编辑文件时,可以利用这个选项。 |
-emacs |
我们希望在调用ant时可以减少输出信息的总量。去掉[java]前缀很容易:只要在运行构建文件时加上-emacs选项就可以了。这个选项会把所有打印行行首的任务名前缀忽略掉。它之所以叫做"emacs",是因为输出的内容是按照emacs风格尽显格式化的,这样其他的编译器可以定位到出现错误的那一行上。 |
-quiet |
只想看到最终构建失败/成功的消息。 |
-verbose |
如果希望深入了解Ant如何工作或者查找构建过程失败的原因。 |
-debug |
该选项不仅包括了所有正常的以及verbose模式的输出,还包括了大量的底层信息。 |
-keep-going |
构建失败:选项会告诉Ant尝试从失败中恢复。如果你再命令行中输入了多余一个的目标,Ant通常会在任何一个目标或者任何它们依赖的目标失败时,停止在失败的那一刻。keep-going选项则会要求Ant继续运行命令行上的其他目标,只要那些目标不依赖于失败的目标。这样,即使主构件过程没有完成,你也可以运行一个用于报告的目标。 |
-projecthelp |
获取项目主要信息:它能列出项目中的主目标(target);当你需要知道一个构建文件提供了那些目标时,-projecthelp可以提供帮助。当我们为一个目标(target)添加了描述信息(description)时,那么该目标就会被标识为"main targets" ,并且会隐藏“other targets”。当有主目标时就不会列出次目标。当没有主目标时,就会列出所有的次目标。为了在项目中看到主目标又看到子目标,你必须同时在项目中使用-projecthelp和-verbose |
3.最终实例的目录结构如下:
Main.java文件
package org.antbook.welcome; public class Main{ public static void main(String args[]){ System.out.println("---------test-------------"); for(int i=0; i< args.length; i++){ System.out.println(args[i]); } } }
最终的构建文件build.xml
<?xml version="1.0"?> <project name="firstbuild" default="archive"> <!--强烈建议你为每个有望扮演一个外部调用者的入口点的目标提供描述信息,并且在每个构建文件的顶部加入一两行的说明,描述构建文件的用途是什么--> <description>Compiles and runs a simple program</description> <!--创建输出目录--> <target name="init"> <mkdir dir="build/classes" /> <mkdir dir="dist" /> </target> <!--将编译结果保存在输出目录--> <target name="compile" depends="init" description="Compiles the source code"><!--description提供描述信息--> <javac srcdir="src" destdir="build/classes" /> <echo>compilation complete!</echo> </target> <!--创建归档文件:archive目标使用<jar>任务创建JAR文件,这个JAR文件包含了build/classes下的所有文件--> <target name="archive" depends="compile" description="Creates the JAR file"> <jar destfile="dist/project.jar" basedir="build/classes" /> </target> <!--删除输出目录:clean目标通过删除输出目录,完成清理任务。它用到一个新任务<delete>--> <target name="clean" depends="init" description="Removes the temporary directories used"> <delete dir="build" /> <delete dir="dist" /> </target> <target name="execute" depends="compile" description="Run the program"> <echo level="warning" message="running" /> <java classname="org.antbook.welcome.Main"<!--执行classes目录中class文件--> classpath="build/classes"> <arg value="a" /> <arg value="b" /> <arg file="." /><!--在执行程序之前,先将这个属性解析成绝对文件地址--> </java> </target> </project>
相关推荐
在"初识[Struts2.0]并[使用Struts2.0]进行SSH集成"的学习过程中,"userLogin"可能是一个示例应用,涉及用户登录功能。用户登录通常包括用户输入验证、数据库查询等操作,这些可以通过Struts2.0的Action实现,而...
初识JPA 2.0** Java Persistence API (JPA) 是Java平台上的一个标准,用于处理对象关系映射(ORM),它允许Java开发者将对象模型与关系数据库进行交互。JPA 2.0是这个标准的一个重要版本,引入了许多新特性和改进...
NULL 博文链接:https://foreversky12.iteye.com/blog/2309639
《初识ASP.NET 2.0电子商务应用C#》是一个基于三层架构的Web应用程序实例,专为学习ASP.NET 2.0技术的开发者提供。这个项目深入浅出地展示了如何构建一个功能完备的在线购物平台,是理解B/S(Browser/Server)架构...
这个"Ant入门与进阶"的主题涵盖了从初识Ant到深入掌握其高级特性的全过程,对于Java开发者来说,这是一个至关重要的工具,因为它是构建Java项目的主要方式之一。 Ant的名称来源于“蚂蚁”,寓意其能够像蚂蚁一样...
《初识ASP.NET 2.0:源代码详解》是一本专为初学者设计的教程,旨在引导读者深入了解和掌握ASP.NET 2.0这一强大的Web应用程序开发框架。该资源包含多个章节的源代码,覆盖了从基础到进阶的关键知识点,通过实际的...
初识C++ 初识C++ 初识C++初识C++初识C++初识C++初识C++
《Ant in Action》是Manning出版社于2007年7月推出的第二版技术书籍,主要专注于Apache Ant这一构建工具的使用和实践。Ant是一个基于Java的...无论你是初识Ant,还是寻求进一步提升,这本书都将为你提供宝贵的指导。
3.1.2 初识opengl es 2.0应用程序 80 3.2 着色器与渲染管线 89 3.2.1 opengl es 1.x的渲染管线 89 3.2.2 opengl es 2.0的渲染管线 94 3.2.3 opengl es中立体物体的构建 97 3.3 主流android手机gpu大...
Java EE(Java Platform, Enterprise Edition)是用于构建企业级Web应用程序的框架,它包含了多个组件和服务,用于处理不同层面的应用需求。在Java EE体系中,展示层是用户与应用程序交互的界面,而JSP(JavaServer ...
初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算
Maven是一款由Apache软件基金会维护的自动化构建工具,它主要面向Java平台的项目构建和依赖管理。与创建工程不同,构建项目是一个涉及编译、测试、打包、部署等多个步骤的过程,而Maven能够管理整个生命周期中所需的...
Struts2.0是Java Web开发中的一个框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化和可扩展的方式来构建应用程序。在本手册中,我们将深入探讨Struts2.0的核心概念和使用方法。 **1. ...
但不可否认的是,Turbo C 2.0作为一代经典,对于很多程序员来说,它承载着无数编程初识的记忆,是C语言编程的启蒙者。 在这个压缩包文件"TC.rar"中,很可能包含了Turbo C 2.0的安装程序和其他相关文件,例如帮助...
python 列表初识,通过此代码,你能够了解到python的列表操作
这就像实际编程中的语句执行顺序,让玩家初识代码执行的线性逻辑。 其次,循环是编程中不可或缺的部分。Light-Bot允许玩家设置循环指令,让机器人重复执行某一序列的动作,直到满足特定条件。这种机制对应于编程...
综上所述,CSS 2.0 中文手册是学习和提升CSS技能的宝贵资料,无论是初识CSS还是深入研究,都能从中受益匪浅。通过阅读和实践手册中的内容,你可以掌握创建美观、响应式网页的关键技术,并进一步探索更高级的CSS 3.0...
jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识...
三年级信息技术课程《初识画图》课件内容 因为要参加比赛,所属机房 装不上
初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识...