ANT的作用
自动化部署 跨平台 利于团队协作
ANT的下载
下载地址:Apache官网 : http://ant.apache.org/
我们这里要注意.zip推荐在window下使用 .tar.gz推荐在linux下使用,但两者之间也可以互相混用,只是推荐
下载完成后,因为我们先是在linux下使用这个工具,我们可以使用以下两种方法在linux下来获得这个工具。
1. 使用winscp,先在Windows下好,然后通过winscp传到linux上
2. 在linux下使用wget 命令来获得资源
wget 从网络下载一个文件 wget+url
wget http://mirrors.hust.edu.cn/apache//ant/binaries/apache-ant-1.10.0-bin.tar.gz
ANT的配置
- 解压文件 tar -xzvf classname
- 配置环境变量 在/etc/profile下配置
#2017-1-19
#ANT
export ANT_HOME=/root/apache-ant-1.10.0
export PATH=.:$ANT_HOME/bin:$PATH
- 重启文件资源
source /etc/profile
- 查看信息 ant -version
ANT的使用
- ANT命令:
ant clean 清理命令
ant run 运行命令
ant compile 编译命令
ant build 生成jar包
这样讲可能会很抽象,我们先通过一个具体的例子来看简单看看ant 命令的使用
一个简单的项目目录如下:
crm
src
com
test
Test.java
build.xml
classess
com
test
Test.class
这是一个叫crm的项目,其中build.xml文件使我们重点要写编写的,ANT命令的很多行为也也在此定义。
我们先来看看其中的内容。
<!--这里声明了xml文件的版本,使用的编码-->
<?xml version="1.0" encoding="UTF-8"?>
<!--name表示项目名称 basedir表示项目的基准目录用.表示当前目录-->
<project name="crm" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="jarfile" value="test.jar"/>
<!--创建一个文件夹-->
<target name="init">
<mkdir dir="${dest}"/>
</target>
<!--编译一个文件-->
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}" includeantruntime="on"/>
</target>
<!--删除一个文件夹-->
<target name="delete">
<delete dir="${dest}"/>
</target>
<!--运行一个文件-->
<target name="runfile" depends="compile">
<java classname="com.test.Test" classpath="${dest}"/>
</target>
<!--把classes目录下的文件打包成一个jar包-->
<target name="jar" depends="compile">
<jar jarfile="${jarfile}" basedir="${dest}"/>
</target>
<!--运行jar包里面的Test.class文件-->
<target name="runjar" depends="jar">
<java classname="com.test.Test" classpath="${jarfile}"/>
</target>
<!--删除生成的jar包-->
<target name="deljar">
<delete file="${jarfile}"/>
</target>
<!--无痕模式,生成一个jar包,运行完成后,在吧jar删除-->
<target name="runonce" depends="delete,deljar,runjar">
<delete file="${jarfile}"/>
<delete dir="${dest}"/>
</target>
</project>
这里我们先说一下<project>标签
project用在xml标签之后,将所有的内容包括起来,标签里可以有多个属性。
(1) default表示默认的运行目标,即指定默认的target(即任务)。这个属性是必须的。
(2) basedir表示项目的基准目录。
(3) name表示项目名。
(4) description表示项目的描述。
每个构建文件都对应于一个项目,但是大型项目经常包含大量的子项目,每一个子项目都可以有
自己的构建文件。
<property>标签
里面可以定义各种用到的变量。
<target>标签
一个项目标签下可以有一个或多个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。在执行之前,首先需要执行它所依赖的target。程序中的名为
run的target的 depends属性compile,而名为compile的target的depends属性是prepare,
所以这几个target执 行的顺序是prepare->compile->run。一个target只能被执行一次,
即使有多个target依赖于它。如果没有if或 unless属性target总 会被执行。
<jar>标签
该标签用来生成一个JAR文件,其属性如下。
重点掌握前两个
(1) destfile表示JAR文件名。
(2) basedir表示被归档的文件名。
(3) includes表示被归档的文件模式。
(4) excludes表示被排除的文件模式。
<javac>标签
重点掌握前两个
(1).srcdir表示源程序的目录。
(2).destdir表示class文件的输出目录。
(3).include表示被编译的文件的模式。
(4).excludes表示被排除的文件的模式。
(5).classpath表示所使用的类路径。
(6).debug表示包含的调试信息。
(7).optimize表示是否使用优化。
(8).verbose 表示提供详细的输出信息。
(9).fileonerror表示当碰到错误就自动停止。
<java>标签
标签
该标签用来执行编译生成的.class文件,其属性如下。
(1).classname 表示将执行的类名。
(2).jar表示包含该类的JAR文件名。
(3).classpath所表示用到的类路径。
<delete>标签
该标签用于删除一个文件或一组文件,去属性如下。
(1)/file表示要删除的文件。
(2).dir表示要删除的目录。
(3).includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。
(4).failonerror 表示指定当碰到错误是否停止,默认值是自动停止。
(5).verbose表示指定是否列出所删除的文件,默认值为不列出
<copy>标签
该标签用于文件或文件集的拷贝,其属性如下。
(1).file 表示源文件。
(2).tofile 表示目标文件。
(3).todir 表示目标目录。
(4).overwrite 表示指定是否覆盖目标文件,默认值是不覆盖。
(5).includeEmptyDirs 表示制定是否拷贝空目录,默认值为拷贝。
(6).failonerror 表示指定如目标没有发现是否自动停止,默认值是停止。
(7).verbose 表示制定是否显示详细信息,默认值不显示。
执行文件
<execexecutable="${base.dir}/email.bat" >
</exec>
效果截图
运行一个文件,使用上面的build.xml的内容。
该命令依赖于前面的init compile命令。
———-
生成一个jar包并运行
在windows下的操作
在windows下的操作其实与linux是很类似的,一样的配置环境变量,编写build.xml文件时可以结合notepad++ ediplus 这样会更加快速的编写xml文件,这里就详细说了。