ant打包(完整例子)

ant 打包

  ant生成文件的根元素是<project…/>,每个项目下可以定义多个生成目标,每个生成目标以<target…/>元素来定义,它是<project…/>元素的子元素被引用。几乎所有ant元素都有的属性是

<?xml version="1.0" encoding="UTF-8"?>
<project basedir = "." name = "test" default = "deploy">
<target name = "deploy">
    <property name = "outputDir" value = "../edatabi-site/WebContent/WEB-INF/lib"></property>
	<property name = "tomcatLib" value = "C:/web_soft/tomcat7Lib/lib"></property>
	<property name="bundle-file" value="${outputDir}"></property>
	<path>
	     <pathelement>
	     
	     </pathelement>
	     
	     <dirset>
	     
	     </dirset>
	     <filelist>
	     
	     </filelist>
	     
	     <fileset>
	     
	     </fileset>
	</path>
</target>
</project>


  一.project的常见属性含义如下

属性 说明 是否必须
name 指定项目名,该属性只指定一个名称,对编译生成项目没有多大意义
descriptin 项目的描述信息,对编译生成项目没有多大意义
basedir 指定ant打包基准路径,打包生成的文件都是基于该基准路径(如basedir = "."表示基准路径是bulid.xml该文件的路径)
default 指定默认的target,这个属性是必须的,如当没有target支持时如(default="" 这个时候你ant 打包builde.xml 则会跳出所有target 给你选择编译哪个),缺省使用的all

  二.target的常见属性含义如下

属性 说明 是否必须
name 指定该target的名称,该属性是必须的。该属性非常重要,如果希望ant运行指定的生成目标时,就是要根据该name来确定生成目标的。因此可以得到同一个project下的不能有两个同名的target 元素 是
depends 该属性可指定一个或多个target名,表示运行该target之前应先运行该depends属性所指定的一个或多个target
if 该属性指定一个属性名,用属性表示仅当设置了该属性时才执行该target
unless 该属性指定一个属性名,用属性表示仅当没有设置了该属性时才执行该target
descriptin 描述信息,对编译生成项目没有多大意义

  target除了上面常见元素之外,还有两个重要子元素<property…/> 和<path…/>

  1.<property…/> 元素是用于定义常量,相当于编程语言里面的宏变量一样。它们都有名称和值,与编程语言不同的是,Ant生成文件中的属性值不可以改变。如:


 <property name = "outputDir" value = "../edatabi-site/WebContent/WEB-INF/lib"></property>

  当需要获取属性值,需要使用${propName}

	<property name="bundle-file" value="${outputDir}"></property>

  2.<path…/>元素,用于定义衣蛾独立的,有名称的文件和路径集,用于被引用。
  <path…/>元素和<classpath…/>元素区别:
   <classpath…/>元素通常作为其它任务的子元素,既可引用已有的文件和路径集,也可以定义一个文件和路径集。而<path…/>元素则作为 <property…/>元素的子元素,用于定义一个独立的,有名称的文件和路径集,用于被引用。。

  3.<path…/>元素和<classpath…/>元素,都用于收定义文件和路径集,这两个元素可接受如下子元素:
  3.1 <pathelement…/>:用于指定一个或多个目录。<pathelement…/>:用于指定如下两个属性中的一个。
  3.1.1 .path:指定一个目录或者多个目录(或者jar文件),多个目录或者jar文件之间以英文冒号( : ),或者英文分号( ; )分开。
  3.1.2 .location:指定一个目录或者jar文件。
  3.2 <dirset…/>:采用模式字符串的形式指定系列目录,如果需要指定多个路径集,可以使用到<dirset…/>,该元素需要使用dir属性,还可以使用<include…/>和<exclude…/>两个子元素来指定包含和不包含哪些目录。
  3.3 <fileset…/>:采用模式字符串的形式指定系列文件,可指定如下两个属性,<fileset…/>元素还可以用<include…/>和<exclude…/>两个子元素来指定包含和不包含哪些文件
  3.3.1 dir:指定文件集里多个文件所在的基准路径。这是一个必须属性
  3.3.2 casesensitive:指定是否区分大小写。默认区分大小写
  3.4 <filelist…/>:用于直接列出系列文件名的方式指定系列文件,可指定如下两个属性
  3.4.1 dir : 指定文件集里多个文件所在的基准路径。这是一个必须属性

  3.4.2 files: 多个文件名列表,多个文件名之间以英文逗号(,)或空白隔开。

<?xml version="1.0" encoding="UTF-8"?>
<project basedir = "." name = "test" default = "deploy">
<target name = "deploy">
    <property name = "outputDir" value = "../edatabi-site/WebContent/WEB-INF/lib"></property>
	<property name = "tomcatLib" value = "C:/web_soft/tomcat7Lib/lib"></property>
	<property name="bundle-file" value="${outputDir}"></property>
	<path id = "classpath">
	     <pathelement location = "./test/v">
	     </pathelement>
	     <dirset dir = "./test">
	          <include name = "a/**/c"></include>
	     </dirset>
	     <filelist dir = "${outputDir}" files = "fastjson-1.2.5.jar">
	     </filelist >
	     <fileset dir = "${outputDir}">
	          <include name = "commons-lang3-*.jar"/>
	     </fileset>
	</path>
</target>
</project>

  三.常见的核心task和可选task

  target元素核心就是task和可选task,即每个<target…/>由一个或多个task组成。这里我们只看核心的task和可选的task。
  1.javac :用于编译一个或多个java源文件,通常需要srcdir和destdir两个属性,用于指定源文件的位置和编译后class文件的保存位置。
  2.java:用于运行某个Java类,通常需要classname属性,用于指定运行哪个类。
  3.jar:用于生成jar包,通常需要指定destfile属性,用于指定创建JAR包的文件名。除此之外,通常还应指定一个文件集,表明需要将哪些文件打包到JAR包里,manifest属性指定MANIFEST.MF文件,还可以包括<manifest…/>子属性MANIFEST.MF文件内容。
  4.sql:用于执行一条或多条SQL语句。
  5.echo:输出某个字符串。
  6.exec:执行操作系统的特定命令,通常需要executable属性,用于指定想执行的命令。
  7.copydir:用于复制文件目录 dest 目标文件夹下(没有会自动生成),src源文件夹。
  8.delete:用于删除文件或路径 file 或者 dir。
  9.mkdir:用于创建文件夹。
  10.move:用户移动文件或路径。

<?xml version="1.0" encoding="UTF-8"?>
<project basedir = "." name = "test" default = "deploy">
<target name = "deploy">
    <property name = "outputDir" value = "../edatabi-site/WebContent/WEB-INF/lib"></property>
	<property name = "tomcatLib" value = "C:/web_soft/tomcat7Lib/lib"></property>
	<property name = "tempPath" value = "C:/antTemp/${ant.project.name}"></property>
	<property name="jar-version" value="1.0"></property>
	<property name="jar-file" value="${outputDir}/${ant.project.name}-${jar-version}.jar"></property>
	<path id = "classpath">
	     <fileset dir = "${outputDir}">
	          <include name = "commons-lang3-*.jar"/>
	          <include name = "fastjson-*.jar"/>
	     </fileset>
	      <fileset dir = "${tomcatLib}">
	          <include name = "*.jar"/>
	     </fileset>
	</path>
	<mkdir dir = "${tempPath}"></mkdir>

	<javac srcdir = "./src" destdir = "${tempPath}">
	   <classpath refid = "classpath"></classpath>
	</javac>
	
	<copydir dest ="${tempPath}/META-INF" src = "./META-INF"></copydir>
	
	<jar destfile="${jar-file}" manifest="${tempPath}/META-INF/MANIFEST.MF">
				<fileset dir="${tempPath}" includes="**/*.*" />
				<manifest>
					<attribute name="Resources-Path" value="${basedir}/META-INF"/>
				</manifest>
	</jar>
	<delete dir = "${tempPath}">
	</delete>
</target>
</project>



发布了56 篇原创文章 · 获赞 1 · 访问量 1168

猜你喜欢

转载自blog.csdn.net/atu1111/article/details/105057029
今日推荐