标签:
首先来一个官方一点的解释
apache ant:是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。
作用:1.可以用ant编译Java类,生成class文件
2.ant可以自定义标签和配置文件
3.ant可以把相关层架构成包
4.ant可以把整个项目生成web包,发布到tomcat
ant的使用方法
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 指定了要使用的构建文件的名称。
标签:
原文地址:http://www.cnblogs.com/Cter12138/p/4284567.html