首先来一个官方一点的解释java
apache ant:是一个将软件编译、测试、部署等步骤联系在一块儿加以自动化的一个工具,大多用于Java环境中的软件开发。web
做用:1.能够用ant编译Java类,生成class文件apache
2.ant能够自定义标签和配置文件tomcat
3.ant能够把相关层架构成包架构
4.ant能够把整个项目生成web包,发布到tomcatapp
ant的使用方法less
1.下载(这个是否是多余说,下载个稳定版的哦)工具
2.配置环境变量:一共有三个须要配置测试
1.JAVA_HOME:指向JDK的安装路径(通常若是你安装了JDK都已经配置好了吧,没有配置的都是白痴么)优化
2.ANT_HOME : 指向ANT的安装路径 好比E:/ant
3.PATH : %ANT_HOME%/bin
3.最最关键的定义生成文件(其实以前两步完成就能够运行ANT了)
生成文件:我理解生成文件应该就是指把java生成class的文件,ant会按照生成文件里面定义的生成任务进行执行
怎么使用生成文件:ant的默认生成文件为build.xml(在命令行),要是想使用其余的xml文件做为生成文件,要将该文件的文件名做为参数传给ant(ant在命令行运 行时,应该确保是在生成文件所在目录下输入ant,而后经过-buildfile或-file或-f来指定生成文件 例如 ant -f demo.xml)
生成文件定义了一个项目的各个生成任务(target标签来表示,每一个target标签都表示一个生成任务),并定义生成任务间的依赖关系
生成文件的位置:通常会把生成文件放在项目顶层目录中(他们说是为了保持整洁和清晰)
一个项目大概是这个结构
project
|—src:存放源文件和各类配置文件的文件夹
|—classes:存放编译后的class文件的文件夹
|—lib:存放第三方jar包的地方(看这霸气的名字就知道了)
|—dist:存放项目打包,项目发布文件的文件夹
|—build.xml
4.生成文件中的标签(copy度娘,栗子是我本身买的=。=)
a.<project>标签
每一个构建文件对应一个项目。<project>标签时构建文件的根标签。它能够有多个内在属性,就如代码中所示,其各个属性的含义分别以下。
(1) default表示默认的运行目标,这个属性是必须的。
(2) basedir表示项目的基准目录。
(3) name表示项目名。
(4) description表示项目的描述。
每一个构建文件都对应于一个项目,可是大型项目常常包含大量的子项目,每个子项目均可以有本身的构建文件。
b.<target>标签(project的子标签)
一个项目标签下能够有一个或多个target标签。一个target标签能够依赖其余的target标签。
例如,有一个target用于编译程序,另外一个target用于声称可执行文件。在生成可执行文件以前必须先编译该文件,因策可执行文件的target依赖于编译程序的target。 Target的全部属性以下。
(1).name表示标明,这个属性是必须的。
(2).depends表示依赖的目标。
(3)if表示仅当属性设置时才执行。
(4)unless表示当属性没有设置时才执行。
(5)description表示项目的描述。
Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中target出现顺序依次执行每一个target。
PS:我仍是举个栗子吧
1.<target name="demoOne" depends="demoTwo"/>
这个的意思就是执行demoOne target这个生成任务以前,必须先执行demoTwo target,另外depends里面能够有多个target,按出现顺序执行(这个就像是一 个方法要想执行,必须再上一个方法已经执行的基础上同样,一环扣一环)
2.<target name="demoOne" unless="demeTwo" />
这个意思是想要执行demoOne的前提是demoTwo没有设置的时候才能够(就像是while,只有前提知足没有设置,才能够执行)。
3.<target name="demoOne" if="demoTwo"/>
这个意思是想要执行demoOne的前提是demoTwo已经设置的时候才能够(if,你懂得)。
c.<mkdir>标签(target的子标签)
该标签用于建立一个目录,它有一个属性dir用来指定所建立的目录名,其代码以下:
<mkdir dir=”demo”/>也能够<mkdir dir ="demo/demochild">
经过以上代码就建立了一个目录.
d.<jar>标签(target的子标签)
该标签用来生成一个JAR文件,其属性以下。
(1) destfile表示JAR文件名。
(2) basedir表示被归档的文件名。
(3) includes表示别归档的文件模式。
(4) exchudes表示被排除的文件模式。
PS:老板再来一个栗子
<jar destfile="dist/demo.jar" basedir="project/classes">
这个的意思是建立一个jar包名字为demo.jar,放在dist文件夹下面,被归档的文件为classes(就像是一份与之对应的文件)
e.<javac标签>(target的子标签)
该标签用于编译一个或一组java文件,其属性以下。
(1).srcdir表示源程序的目录。
(2).destdir表示class文件的输出目录。
(3).include表示被编译的文件的模式。
(4).excludes表示被排除的文件的模式。
(5).classpath表示所使用的类路径。
(6).debug表示包含的调试信息。
(7).optimize表示是否使用优化。
(8).verbose 表示提供详细的输出信息。
(9).fileonerror表示当碰到错误就自动中止。
f.<java>标签(target的子标签)
该标签用来执行编译生成的.class文件,其属性以下。
(1).classname 表示将执行的类名。
(2).jar表示包含该类的JAR文件名。
(3).classpath所表示用到的类路径。
(4).fork表示在一个新的虚拟机中运行该类。
(5).failonerror表示当出现错误时自动中止。
(6).output 表示输出文件。
(7).append表示追加或者覆盖默认文件。
g.<delete>标签(target的子标签)
该标签用于删除一个文件或一组文件,其属性以下。
(1)/file表示要删除的文件。
(2).dir表示要删除的目录。
(3).includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。
(4).failonerror 表示指定当碰到错误是否中止,默认值是自动中止。
(5).verbose表示指定是否列出所删除的文件,默认值为不列出。
h.<copy>标签(target的子标签)
该标签用于文件或文件集的拷贝,其属性以下。
(1).file 表示源文件。
(2).tofile 表示目标文件。
(3).todir 表示目标目录。
(4).overwrite 表示指定是否覆盖目标文件,默认值是不覆盖。
(5).includeEmptyDirs 表示制定是否拷贝空目录,默认值为拷贝。
(6).failonerror 表示指定如目标没有发现是否自动中止,默认值是中止。
(7).verbose 表示制定是否显示详细信息,默认值不显示。
i.<property>标签(project的子标签)
该标签用于定义一个或多个属性
1.name:指定须要设置的属性名
2.value:指定须要设置的属性值
3.resource:指定属性文件袋的源名称,Ant将负责从文件中读取属性名和属性值
4.file:指定属性文件的文件名,Ant将负责从文件中读取属性名和属性值
5.url:指定属性文件的URL地址,Ant将负责从属性文件中读取属性名和属性值‘
6.environment:用于指定系统环境变量的前缀,经过这种方式容许Ant访问环境变量
7.classpathref:指定搜索属性文件的文件和路径集。
8.classpathref:指定搜索文件的文件和路径集引用,只是引用。
栗子来喽:
<peoperty name="demo" value ="demoValue"/>
定义名字为demo的属性,其值为demoValue,若是须要获取属性值,则使用${demo}的形式。
5.Ant 的运行安装好Ant而且配置好路径以后,在命令行中切换到构建文件的目录(xml所在目录哦),输入Ant命令就能够运行Ant.若没有指定任何参数,Ant会在当前目录下查询build.xml文件。若是找到了就用该文件做为构建文件。若是使用了 –find 选项,Ant 就会在上级目录中找构建文件,直至到达文件系统的根目录。若是构建文件的名字不是build.xml ,则Ant运行的时候就可使用 –buildfile file,这里file 指定了要使用的构建文件的名称。