ANT命令整理

来源:互联网 发布:澳洲硕士知乎 编辑:程序博客网 时间:2024/05/16 05:29
一.ant关键元素
1) project
    属性:name:指定project名称,default:project默认执行target名称,basedir:用于指定基路径的位置
例子:
<?xml version="1.0"?>
<project name="projectStudy" default="sayBaseDir" basedir="E:"apache-ant-1.7.0">
<target name="sayBaseDir">
<echo message="The base dir is: ${basedir}"/>
</target>
</project>

2).target
属性:    name:指定target元素的名称,这个属性在一个project元素中是唯一的。
                depends:用于描述target之间的依赖关系,若与多个target存在依赖关系时,需要以“,”间隔。Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行。
                if:用于验证指定的属性是否存在,若不存在,所在target将不会被执行。
               unless:该属性的功能与if属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在target将会被执行。
              description:该属性是关于target功能的简短描述和说明。
例子:
<target name="targetA" if="ant.java.version">
<echo message="Java Version: ${ant.java.version}"/>
</target>
<target name="targetB" depends="targetA" unless="amigo">
<description> a depend example!</description>
<echo message="The base dir is: ${basedir}"/>
</target>
3.property
该元素可看作参量或者参数的定义,project的属性可以通过property元素来设定,也可在Ant之外设定。
<?xml version="1.0"?>
<project name="propertyStudy" default="example">
<property name="name" value="amigo"/>
<property name="age" value="25"/>
<target name="example">
<echo message="name: ${name}, age: ${age}"/>
</target>
</project>
二:常用任务:
1.       copy任务
Eg1.复制单个文件:<copy file="file.txt" tofile="copy.txt"/>
 
Eg2.对文件目录进行复制:
 
<copy todir="../newdir/dest_dir">
 
<fileset dir="src_dir"/>
 
</copy>
 
Eg3. 将文件复制到另外的目录:
 
<copy file="file.txt" todir="../other/dir"/>
2.       delete任务
Eg1. 删除某个文件:<delete file="photo/amigo.jpg"/>
 
Eg2. 删除某个目录:<delete dir="photo"/>
 
Eg3. 删除所有的备份目录或空目录:
 
<delete includeEmptyDirs="true">
 
<fileset dir="." includes="**/*.bak"/>
 
</delete>
3.       mkdir任务
创建目录eg:<mkdir dir="build"/>
4.       move任务
Eg1. 移动单个文件:<move file="fromfile" tofile=”tofile”/>
 
Eg2. 移动单个文件到另一个目录:<move file="fromfile" todir=”movedir”/>
 
Eg3. 移动某个目录到另一个目录:
 
<move todir="newdir">
 
<fileset dir="olddir"/>
 
</move>
5.       echo任务
该任务的作用是根据日志或监控器的级别输出信息。它包括message、file、append和level四个属性,举例如下:
 
<echo message="Hello,Amigo" file="logs/system.log" append="true">
三:利用ant部署构建java工程
1。编译java文件
<?xml version="1.0"?>
<project name="javacTest"default="compile" basedir=".">
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
</project>
意思是:默认执行target为compile,compile依赖于clean,clean作用是清除build文件夹,之后执行compile,新建classes文件夹,编译src下java文件,放在新建的文件夹中。
 2.执行java文件
<?xml version="1.0"?>
<project name="javaTest" default="run" basedir=".">
<target name="clean" description="清除目录">
<delete dir="build" />
</target>
<target name="compile" depends="clean" description="编译">
<mkdir dir="build/classes" />
<javac srcdir="src" destdir="build/classes" />
</target>
<target name="run" depends="compile" description="运行">
<java classname="AntTest">
<classpath>
<pathelement path="build/classes" />
</classpath>
</java>
</target>
</project>
3.打jar包
<?xml version="1.0"?>
<project name="javaTest" default="jar" basedir=".">
<target name="jar" description="打JAR包">
<jar destfile="helloworld.jar" basedir="build/classes">
<manifest>//在打jar包时,往往需要在manifest文件中设置Class-Path,包含一些依赖的第三方jar包,使得以“java -jar xxx.jar”方式启动的jar包能正确找到依赖的类。
<attribute name="Main-class" value="HelloWorld" />
</manifest>
</jar>
</target>
</project>
在依赖的jar包比较多的情况下,手工设置所有的jar包是非常令人崩溃而且容易出错的事情。一旦引用的外部jar包有变动,还需要到这里维护,时间一长,可能就会忘记。可用以下配置:
<path id="classpath">
 
<fileset dir="${lib}" include="**/*.jar"/>
 
</path>
 
<target name="jar" depends="compile">
 
<pathconvert property="mf.classpath" pathsep=" ">
 
<path refid="classpath" />
 
<flattenmapper />
 
</pathconvert>
 
<jar destfile="${dest.jar}">
 
<fileset dir="${source.class}">
 
<include name="**/*.class"/>
 
</fileset>
 
<manifest>
 
<attribute name="Main-Class" value="${mainclass}"/>
 
<attribute name="Class-Path" value="${mf.classpath} "/>
 
</manifest>
 
</jar>
4.打包web项目为war包
<?xml version="1.0"?>
<project name="antwebproject" default="war"basedir=".">
<property name="classes" value="build/classes"/>
<property name="build"value="build"/>
<property name="lib"value="WebRoot/WEB-INF/lib"/> <!-- 删除build路径-->
<target name="clean">
<delete dir="build"/>
</target>
<!-- 建立build/classes路径,并编译class文件到build/classes路径下-->
<target name="compile" depends="clean">
<mkdir dir="${classes}"/>
<javac srcdir="src" destdir="${classes}"/>
</target>
<!-- 打war包-->
<target name="war" depends="compile">
<war destfile="${build}/antwebproject.war" webxml="WebRoot/WEB-INF/web.xml"> <!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹-->
<fileset dir="WebRoot" includes="**/*.jsp"/>
<!-- 拷贝lib目录下的jar包-->
<lib dir="${lib}"/>
<!-- 拷贝build/classes下的class文件-->
<classesdir="${classes}"/>
</war>
</target>
</project>




 
0 0