学习ant主要是学写build.xml配置文件(这里的例子都是自己在记事本中敲的)
1.Ant是基于Java的构建工具,所以必须先有jdk
2.Ant环境变量的配置:
a.ANT_HOME:D:\temp\ant\apache-ant-1.8.4(指向你解压的路径)
b.path: %ANT_HOME%\bin
3.默认build.xml在命令行中直接输ant
也可以是其他的
例如:a.xml 在命令行中输:ant -f a.xml
例子1:(自己在记事本中敲的)
<?xml version="1.0"?>
<!--工程-->
<project name="firstbuild" default="demo1">
<property name="p1" value="Hello Ant"/>
<!--容器==数据库中的事物-->
<target name="demo1"> <!--不写的话,默认是缺省得,执行demo1-->
<!--回显HelloWorld--> <!--D:\temp\ant\demo>ant -f a.xml-->
<echo message="Hello, world"/>
<echo>This is a longer message stretching over owo Lines</echo>
</target>
<!--属性-->
<target name="demo2">
<!--回显属性-> <!--D:\temp\ant\demo>ant -f a.xml demo2-->
<echo>${p1}</echo>
</target>
<!--拷贝-->
<target name="demo3">
<echo message="拷贝单个文件"/> <!--D:\temp\ant\demo>ant -f a.xml demo3-->
<copy file="myfile.txt" tofile="mycopy.txt"/>
<echo message="拷贝单个文件到指定目录下"/>
<copy file="myfile.txt" todir="../some/other/dir"/>
<echo message="拷贝一个目录到另外一个目录下"/>
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
</target>
<!--拷贝一批文件到指定目录下-->
<target name="demo4">
<echo message="拷贝一批文件到指定目录下"/>
<copy todir="../dest/dir">
<fileset dir="src_dir">
<include name="**/*.java"/> <!--包括-->
<exclude name="**/Test.java"/> <!--不包括-->
</fileset>
</copy>
<!--这个是上面的简写形式-->
<copy todir="../dest/dir">
<fileset dir="src_dir" excludes="**/*.java"/>
</copy>
</target>
<!--删除-->
<target name="demo5">
<echo message="删除一个文件"/>
<delete file="/lib/ant.jar"/>
<echo message="删除指定目录及其子目录"/>
<delete dir="lib"/>
<echo message="删除指定的一组文件"/>
<delete>
<fileset dir="." includes="**/*.bak"/>
</delete>
</target>
<!--重命名文件-->
<target name="demo6">
<echo message="重命名文件/>
<move file="file.orig" tofile="file.moved"/> <!--移动或重命名一个文件-->
<echo message="移动或重命名一个文件到另一个文件夹下面/>
<move file="file.orig" todir="dir/to/move/to"/>
<echo message="将一个目录移到另外一个目录下/>
<move todir="new/dir/to/move/to">
<fileset dir="src/dir"/>
</move>
<echo message="将一组文件移到另外的目录下/>
<move todir="some/new/dir">
<fileset dir="src/dir">
<include name="**/*.jar"/>
<eclude name="**/ant.jar"/>
</fileset>
</move>
</target>
</project>
4.Ant核心之javac(编译java源代码)
例子2:(自己在记事本中敲的)
<?xml version="1.0"?>
<project name="firstbuild" default="run">
<target name="init">
<mkdir dir="build/classes"/>
<mkdir dir="dist"/>
</target>
<target name="compile" depends="init">
<javac srcdir="src" destdir="build/classes"/>
<echo>编译完成!</echo>
</target>
<target name="archive" depends="compile">
<jar destfile="dist/project.jar" basedir="build/classes"/>
</target>
<target name="clean" depends="init">
<delete dir="build"/>
<delete dir="dist"/>
</target>
<target name="clean" depends="init">
<java classname="HelloWorld" classpath="build/classes">
</java>
</target>
</project>
:)在javac使用属性
:)<property name="classpath" value=".;./xml-apis.jar;../lib/xbean.jar;./easypo.jar"/>
:)<property srcdir="{src}" destdir="{src}" classpath="{classpath}" debug="on"/>
:)路径是在property中定义的
5.Ant核心任务之java(执行指定的java类)
例一:
<java classname="test.Main"> <!--classname中指定要执行的类,classpath设定要使用的环境变量-->
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
6.Ant核心任务之jar(将一组文件打包)
:)将{build}/classes下面的所有的文件打包到{dist}/lib/app.jar中
<jar destfile="{dist}/lib/app.jar" basedir="{build}/classes"/>
:)将{build}/classes下面的所有的文件打包到{dist}/lib/app.jar中,但是包括mypackage/test所有文件,不包括所有的Test.class
<jar destfile="{dist}/lib/app.jar" basedir="{build}/classes" includes="mypackage/test/** excludes=**/Test.class"/>
:)manifest属性指定自己的META-INF/MANIFEST.MF文件,而不是由系统生成
<jar destfile="{dist}/lib/app.jar" basedir="{build}/classes" includes="mypackage/test/** excludes=**/Test.class" manifest="my.mf"/>
7.Ant核心任务之war
:)对war的扩展,用于大伯啊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
src/java/com/itcast....../*.java
下面是我们的任务的内容:
<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
<fileset dir="src/html/myapp"/>
<fileset dir="src/jsp/myapp"/>
<lib dir="thirdparty/libs">
<exclude name="jdbc1.jar">
</lib>
<classes dir="build/main"/>
<zipfileset dir="src/graphics/images/gifs" prefix="images"/>
</war>
完成后的结果:
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
Ant学习总结
最新推荐文章于 2024-11-14 11:50:33 发布