ant

ant实践入门
关键字: ant
问题的提出:
Ant(蚂蚁是搬东西的):编译,打包,配置,部署。
这些命令如果一个个地写很麻烦,而且不可以重用,能不能把一个动态的过程描述成一个静态的步骤。
于是,我们想到用一个批处理命令文件,但是如果用.sh和.bat则不可以跨平台,但是如果用ant则可以跨平台。
Ant为了做到跨平台,一个是跨操作系统,另一个是跨IDE,Ant首先抽象出一个中间语言,这个语言是基于xml的。
然后,用Ant执行器来解析该xml描述的操作,并最终和操作系统的批处理命令对应起来。当然,对于ftp这样的外部命令,
可以由第三方插件来支持。

Ant是Apache组织负责开发和维护的,Ant的许多第三方插件也是Apache支持的,比如ftp任务。
http://jakarta.apache.org/ant

Ant的基本任务
常用的内置任务:javac java jar war copy delete mkdir move tstamp
1、java应用程序相关的
【编译】
<javac srcdir="myproject/mysrc" destdir="classes" /> 将源代码编译输出的classes类文件输出到哪。
我们能不能只选择具有某些特性的源代码才编译呢?或者编译的时候,我们要依赖于第三方的一些库呢?
<javac srcdir="myproject/mysrc" destdir="classes" excludes/includes="mypackage/**" classpath="mylib.jar"/>

【运行】
<java classname="textMyTest">
<java classname="testMyTest" classpath="tester.jar" fork="yes">
由于build.xml是由ant来执行的,解析ant要用一个jvm;那么运行的程序可在同一个jvm,也可以单独一个jvm。
fork=yes是不同的jvm。

<java classname="testMyTest">
<classpath>
<pathelement path="myproject/classes">
<pathelement location="mylib/lib.jar">
</classpath>
//classpath这个复合节点,很明朗地让我们明白了java中的常见classpath,一种是基于目录的(比如classes目录),另一种是基于.jar文件的。
//分别对应pathelement path="目录" pathelement location=".jar"
</java>

【打包 jar】
<jar jarfile="myjar.jar" basedir="myproject/root" />
<jar jarfile="myjar.jar" basedir="myproject/root" excludes="*.html" update="yes"/>
<jar jarfile="myjar.jar" basedir="myproject/root" compress="false" /> //是否使用压缩形式

【打包 war】

2、操作文件系统
<copy file="myfile.txt" tofile="root/WEB-INF/web.xml" />
<copy file="myfile.txt" tofile="root/WEB-INF/web.xml" overWrite="yes" />
<delete file="myfile.jar" />
<delete dir="myproject/temp" />

3、资源的集合
FileSets和PatternSets
<patternset> 元素定义一个符合条件的资源的集合。(利用正则表达式来进行过滤)
<fileset> 元素定义一个相对于基本目录的资源集合。

<patternset id="javaFiles">
<include name="**/*.java"> (定义所有的java源文件,无论是哪个目录,包括当前目录及其子目录)
</patternset>

<fileset dir ="myproject/src">
<patternset refid="javaFiles"> (用fileset来指定基本目录,然后用patternset来过滤基本目录及其子目录满足条件的文件)
</fileset>

4、应用fileset和patternset
<jar jarfile="mylib.jar">
<fileset dir="myproject/classes" />
<fileset dir="myproject/bin">
//可以从一个或多个fileset中创建jar
</jar>


<delete>
<fileset dir=".">
<patternset refid="classonly" />
</fileset>
</delete>


<copy todir="../app">
<fileset dir="myproject/root">
<patternset>
<exculude name="**/*.java">
</patternset>
</fileset>
</copy>

5、
<ant dir="myproject" /> 则选择缺省的build.xml文件;
<ant dir="myproject" antfile="c:/test/mybuild.xml" /> 专门指定了build文件。

6、实例
<project name="myWebApp" default="deploy" basedir=".">
<property name="webHome" value="c:\beta\weblogic" />
<property name="domain" value="mydomain" />

<target name="compile">
<mkdir dir="classes" /> //编译所有的java代码,当然有时我们可以排除单元测试的
<javac srcdir="src" destdir="classes" />
</target>

<target name="layout" depends="compile"> //编译完后部署到web服务器上去
<mkdir dir="temp/WEB-INF/classes" />
<copy todir="temp/WEB-INF/classes">
<fileset dir="classes"> //使用fileset和patternset来定义资源集合
</copy>
<copy todir="webroot">
<fileset dir="webroot" />
</copy>
</target>

<target name="archive" depends="layout">
<jar jarfile="musite.war" basedir="temp" />
<delete dir="classes" />
<delete dir="temp" />
</target>


</project>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值