Ant
Ant是一个构建工具,是一个小程序。但是它通过自动完成所有的编译代码,运行测试以及打包重新部署的结果等繁琐费力的任务来帮助软件团队开发大程序.
Ant 使用Java编写,跨平台,易使用且可伸缩。既可以用在小型个人项目中,也可以用于大型多团队软件项目。
Ant的目标是自动完成所有的构建过程。
Ant的核心概念
构建文件:-build.xml
•Ant使用称之为构建文件的xml文件来描述如何构建工程,在这个文件里,开发者列出各种构建目标(target)以及达到这些目标的任务(task)。
每个项目包含多个目标 – target //每个target为一个大任务
目标依赖于其他目标 – depends //大任务可以依赖于其他大任务,助理解:extends也有类似的依赖关系
目标包含任务 – javac,java,jar,war,copy,mkdir,delete,sql…//小任务
由任务完成所有工作。
第一个示例:
Ok
构建文件并不一定要被命名为build.xml。不过build.xml是Ant 要搜索的默认文件名。
Ant任务(task)
一个task是一段可执行的代码。
一个task可以有多个属性(如果你愿意的话,可以将其称之为变量)。属性只可能包含对property的引用。这些引用会在task执行前被解析。
下面是Task的一般构造形式:
•
•这里taskname是task的名字,attributeN是属性名,valueN是属性值。
有一套内置的(built-in)task,以及一些可选task,但你也可以编写自己的task。
所有的task都有一个task名字属性。Ant用属性值来产生日志信息。
Ant核心任务之copy
1.拷贝单个的文件:
2.拷贝单个的文件到指定目录下
3.拷贝一个目录到另外一个目录下
4.拷贝一批文件到指定目录下
5.拷贝一批文件到指定目录下,将文件名后增加。Bak后缀
6.拷贝一组文件到指定目录下,替换其中的@标签@内容
Ant核心任务之delete
删除一个(组)文件或者目录,例子:
1.删除一个文件
2.删除指定目录及其子目录
3.删除指定的一组文件
4.删除指定目录及其子目录,包括他自己
Ant核心任务move
Move:移动或重命名一个(组)文件、目录,例子:
1.移动或重命名一个文件
2.移动或重命名一个文件到另一个文件夹下面
3.将一个目录移到另外一个目录下
4.将一组文件移动到另外的目录下
5.移动文件过程中增加。Bak后缀
Ant核心之javac
编译java原代码,例子
1.
编译{src}目录及其子目录下的所有。Java文件。Class文件将放在{build}指定的目录下,classpath表示需要用到的类文件或者目录,debug设置为on表示输出debug信息
2.
编译{src}和{src2}目录及其子目录下的所有。Java文件,但是package/p1/**,mypackage/p2/**将被编译,而mypackage/p1/testpackage/**将不会被编译。Class文件将放在{build}指定的目录下,classpath表示需要用到的类文件或者目录,debug设置为on表示输出debug信息
3.
路径是在property中定义的
Ant核心任务之java
java执行指定的java类,例子:
1.
classname中指定要执行的类,classpath设定要使用的环境变量
2.
Ant核心任务之jar
jar将一组文件打包,例子:
1.
将{build}/classes下面的所有文件打包到{dist}/lib/app.jar中
2.
将{build}/classes下面的所有文件打包到{dist}/lib/app.jar中,但是包括mypackage/test/所有文件不包括所有的Test.class
3.
manifest属性指定自己的META-INF/MANIFEST.MF文件,而不是由系统生成
Ant核心任务之war
对Jar的扩展,用于打包Web应用,例子:
假设我们的文件目录如下:
thirdparty/libs/jdbc1.jar
thirdparty/libs/jdbc2.jar
build/main/com/myco/myapp/Servlet.class
src/metadata/myapp.xml
src/html/myapp/index.html
src/jsp/myapp/front.jsp
src/graphics/images/gifs/small/logo.gif
src/graphics/images/gifs/large/logo.gif
下面是我们的任务的内容:
完成后的结果:
WEB-INF/web.xml
WEB-INF/lib/jdbc2.jar
WEB-INF/classes/com/myco/myapp/Servlet.class
META-INF/MANIFEST.MF
index.html
front.jsp
images/small/logo.gif
images/large/logo.gif
bulid.xml
Ok
依赖target......