Ant之build.xml语法案例

<?xml version="1.0"?>
   <project name="Hello World Project" default="info">

	<target name="info">
	  <echo>Hello World - Welcome to Apache Ant!</echo>
	</target>

	<property name="test" value="shit" />
	//引用的时候这么引用${test}

	//depends依赖info的target
	<target name="compile" depends="info">
	<!--other command-->
	</target>
   
	复制代码 代码如下:
	< copy file="old.txt" tofile="new.txt"/>
	● 对文件目录进行复制
	< copy todir="../dest_dir">     <fileset dir="src_dir"/> < /copy>
	● 将文件复制到另外的目录:
	< copy file="src.txt" todir="c:/base"/>
	
	● 删除某个文件:
	< delete file="/res/image/cat.jpg"/>
	● 删除某个目录:   
	< delete dir="/res/image"/>
	● 删除所有的jar文件或空目录:
	< delete includeEmptyDirs="true">        
		<fileset dir="." includes="**/*.jar"/> 
	< /delete>
	
	创建目录
	< mkdir dir="/home/philander/build/classes"/>
	
	移动文件或目录,举例如下: 
	● 移动单个文件:
	< move file="sourcefile" tofile=”destfile”/>
	● 移动单个文件到另一个目录:
	< move file="sourcefile" todir=”movedir”/>
	● 移动某个目录到另一个目录:
	< move todir="newdir">     
		<fileset dir="olddir"/> 
	< /move>
	
	在执行名为build的target任务时,由于target中含有if的标签,所以需要判断名为check的条件语句的值,
	但是istrue=false的语句表示条件不符合,echo并不会执行。
	<condition property="check">  
		<istrue value="false" />  
	</condition>  
	<target name="build" if="check">  
		<echo>build running...</echo>  
	</target>  
		
	该标签用来生成一个JAR文件,其属性如下。 
	● destfile表示JAR文件名。 
	● basedir表示被归档的文件名。 
	● includes表示别归档的文件模式。 
	● exchudes表示被排除的文件模式。
	● compress表示是否压缩。
	<jar destfile="${webRoot}/${ash_jar}" level="9" compress="true" encoding="utf-8" basedir="${dest}">
		<manifest>
			<attribute name="Implementation-Version" value="Version: 2.2"/>
		</manifest>
	</jar>	
	
	<!-- 创建zip -->
	<zip basedir="${basedir}\classes" zipfile="temp\output.zip"/> 
	<!-- 创建tgz -->
	<gzip src="classes\**\*.class" zipfile="output.class.gz"/>
	<!-- 解压zip -->
	<unzip src="output.class.gz" dest="extractDir"/>
	<!-- 建立war包 -->
	<war destfile="${webRoot}/ash.war" basedir="${basedir}/web" webxml="${basedir}/web/WEB-INF/web.xml">
		<exclude name="WEB-INF/classes/**"/>
		<exclude name="WEB-INF/lib/**"/>
		<exclude name="WEB-INF/work/_jsp/**"/>
		<lib dir="${lib.dir}" includes="**/*.jar, **/*.so, **/*.dll">
			<exclude name="${webRoot}\${helloworld_jar}"/>
		</lib>
		<lib file="${webRoot}/${helloworld_jar}"/>
		<classes dir="${dest}" includes="**/*.xml, **/*.properites, **/*.xsd"> </classes>
	</war>
	
	javac 标签节点元素
	该标签用于编译一个或一组java文件,其属性如下。 
	● srcdir表示源程序的目录。 
	● destdir表示class文件的输出目录。 
	● include表示被编译的文件的模式。 
	● excludes表示被排除的文件的模式。 
	● classpath表示所使用的类路径。 
	● debug表示包含的调试信息。 
	● optimize表示是否使用优化。 
	● verbose 表示提供详细的输出信息。 
	● fileonerror表示当碰到错误就自动停止。
	<javac srcdir="${src}" destdir="${dest}"/>
	<!-- 设置jvm内存
	<javac srcdir="src" fork="true"/> 
	<javac srcdir="src" fork="true" executable="d:\sdk141\bin\javac" 
	memoryMaximumSize="128m"/> 
	-->
	
	java 标签节点元素
	该标签用来执行编译生成的.class文件,其属性如下。 
	● classname 表示将执行的类名。 
	● jar表示包含该类的JAR文件名。 
	● classpath所表示用到的类路径。 
	● fork表示在一个新的虚拟机中运行该类。 
	● failonerror表示当出现错误时自动停止。 
	● output 表示输出文件。 
	● append表示追加或者覆盖默认文件。
	<java classname="com.hoo.test.HelloWorld" classpath="${hello_jar}"/>
	<java fork="false" classname="org.apache.tools.ant.Main" taskname="-">
      <arg value="-projecthelp"/>
      <arg value="-f"/>
      <arg value="${ant.file}"/>
    </java>
	zookeeper中的java标签
	<java classname="org.apache.jute.compiler.generated.Rcc" fork="true" dir="${src_generated.dir}">
		<arg value="-l" />
		<arg value="java" />
		<arg value="../../zookeeper.jute" /> 
		<classpath>
			<pathelement path="${build.classes}" />
			<pathelement path="${jute_javacc.dir}" />
		</classpath>
	</java>
		
	arg 数据参数元素
	由Ant构建文件调用的程序,可以通过<arg>元素向其传递命令行参数,如apply,exec和java任务均可接受嵌套<arg>元素,可以为各自的过程调用指定参数。以下是<arg>的所有属性。 
	● values 是一个命令参数。如果参数中有空格,但又想将它作为单独一个值,则使用此属性。 
	● file 表示一个参数的文件名。在构建文件中,此文件名相对于当前的工作目录。 
	● line 表示用空格分隔的多个参数列表。 
	● 表示路径,一个作为单个命令行变量的path-like的字符串;或作为分隔符,Ant会将其转变为特定平台的分隔符。
	● pathref 引用的path(使用path元素节点定义path)的id 
	● prefix 前缀 
	● suffix 后缀
	<arg value="-l -a"/> 
		
	ervironment 类型
	由Ant构建文件调用的外部命令或程序,<env>元素制定了哪些环境变量要传递给正在执行的系统命令,<env>元素可以接受以下属性。 
	● file表示环境变量值的文件名。此文件名要被转换位一个绝对路径。 
	● path表示环境变量的路径。Ant会将它转换为一个本地约定。 
	● value 表示环境变量的一个直接变量。 
	● key 表示环境变量名。 
	注意 file path 或 value只能取一个。
	
	filelist 文件集合列表
	filelist 是一个支持命名的文件列表的数据类型,包含在一个filelist类型中的文件不一定是存在的文件。以下是其所有的属性。 
	● dir是用于计算绝对文件名的目录。 
	● files 是用逗号分隔的文件名列表。 
	● refid 是对某处定义的一个<filelist>的引用。 
	注意 dir 和 files 都是必要的,除非指定了refid(这种情况下,dir和files都不允许使用)。
	<filelist id="docfiles" dir="${doc.src}" files="foo.xml,bar.xml"/> 
	文件集合 ${doc.src}/foo.xml和${doc.src}/bar.xml. 这些文件也许还是不存在的文件.
	<filelist id="docfiles" dir="${doc.src}" files="foo.xml bar.xml"/> 
	<filelist refid="docfiles"/> 	 
	<filelist id="docfiles" dir="${doc.src}">
		<file name="foo.xml"/>
		<file name="bar.xml"/>
	</filelist>
		
	path元素用来表示一个类路径,不过它还可以用于表示其他的路径。在用作几个属性时,路经中的各项用分号或冒号隔开。在构建的时候,此分隔符将代替当前平台中所有的路径分隔符,其拥有的属性如下。 
	● location 表示一个文件或目录。Ant在内部将此扩展为一个绝对路径。 
	● refid 是对当前构建文件中某处定义的一个path的引用。 
	● path表示一个文件或路径名列表。
	<path id="buildpath">
		<fileset refid="lib.runtime"/>
		<fileset refid="lib.container"/>
		<fileset refid="lib.extras"/>
	</path>
 
	<path id="src.paths">
		<fileset id="srcs" dir=".">
			<include name="src/**/*.java"/>
		</fileset>
	</path>
	
	exec:
	用来执行系统命令,或者指定环境的命令。 
	比如:	
	<target name="test">
		<exec executable="cmd.exe">
			<arg line="/c dir"/>
		</exec>
	</target>
	
	parallel:并行执行多个子任务。
	<parallel failonany="true">
		<antcall target="sync_module_corp"/>
		<antcall target="sync_module_main"/>
		<antcall target="sync_module_teach"/>
		<antcall target="sync_module_backend"/>
		<antcall target="sync_module_passport"/>
		<antcall target="sync_module_business"/>
		<antcall target="sync_module_k12_teach"/>
		<antcall target="sync_module_k12_backend"/>
		<antcall target="build_style"/>
	</parallel>

	<!-- 一个完整的ant应用例子-->
	    <!-- property类似于程序中定义简单的变量 -->
    <property name="src" value="src"/>
    <property name="dest" value="classes"/>
    <property name="hello_jar" value="helloWorld.jar"/>
    <!-- 
    target是一个事件、事情、任务, name是当前事情的名称,depends是依赖的上一件或是多件事情
    如果所依赖的事情没有执行,ant会先运行依赖事情,然后再运行当前事情
    -->
  
    <!-- 初始化 -->
    <target name="init">
        <!-- 建立classes目录 -->
        <mkdir dir="${dest}"/>
        <mkdir dir="temp"/>
        <mkdir dir="temp2"/>
    </target>
    
    <!-- 编译 -->
    <target name="compile" depends="init">
        <javac srcdir="${src}" destdir="${dest}"/>
        <!-- 设置jvm内存
        <javac srcdir="src" fork="true"/> 
        <javac srcdir="src" fork="true" executable="d:\sdk141\bin\javac" 
        memoryMaximumSize="128m"/> 
        -->
    </target>
    
    <!-- 建立jar包 -->
    <target name="build" depends="compile">
        <!-- 
        <jar jarfile="${hello_jar}" basedir="${dest}"/>
        创建一个名称是package.jar文件
        <jar destfile="package.jar" basedir="classes"/> 
        -->
        <jar destfile="${hello_jar}" basedir="classes"> 
            <!-- 向jar包中的main文件中添加内容 -->
            <manifest> 
                <attribute name="Built-By" value="${user.name}"/> 
                <attribute name="Main-class" value="package.Main"/> 
            </manifest> 
        </jar> 
        <!-- 复制jar文件  todir="复制到目录"-->
        <copy file="${hello_jar}" tofile="${dest}\temp.jar"/> 
        <copy todir="temp"> 
            <!-- 不按照默认方式 defaultexcludes="" -->
              <fileset dir="src"> 
                <include name="**/*.java"/>
              </fileset> 
        </copy> 
        
        <copy todir="temp2"> 
            <fileset dir="src">
                <and>
                    <contains text="main"/> 
                    <size value="1" when="more"/> 
                </and>
            </fileset>
        </copy> 
        
        <!-- 移动jar文件 -->
        <move file="${dest}\temp.jar" tofile="temp\move-temp.jar"/> 
        <!-- 创建zip -->
        <zip basedir="${basedir}\classes" zipfile="temp\output.zip"/> 
        <!-- 创建tgz -->
        <gzip src="classes\**\*.class" zipfile="output.class.gz"/>
        <!-- 解压zip -->
        <unzip src="output.class.gz" dest="extractDir"/> 
        <!--替换input.txt内容中的old为new
        <replace file="input.txt" token="old" value="new"/>
        --> 
    </target>
    
    <!-- 运行 -->
    <target name="run" depends="build">
        <java classname="com.hoo.test.HelloWorld" classpath="${hello_jar}"/>
    </target>
    
    <!-- 清除 -->
    <target name="clean">
        <!-- 删除生成的文件 -->
        <delete dir="${dest}"/>
        <delete file="${hello_jar}"/>
    </target>
    
    <tstamp> 
       <format property="OFFSET_TIME" 
               pattern="HH:mm:ss" 
               offset="10" unit="minute"/> 
    </tstamp>
    
    <!-- 重新运行 -->
    <target name="rerun" depends="clean,run">
        <echo message="###${TSTAMP}#${TODAY}#${DSTAMP}###"/>
        <aunt target="clean"/>
        <aunt target="run"/>
    </target>
	
	<!--项目demo2 -->
	    <description>projectName系统发布</description>  
		<!--属性设置-->  
		<property environment="env" />  
		<property name="src.dir" value="${basedir}/src" />  
		<property name="jar.file" value="projectName.jar" />  
		<property name="java.lib.dir" value="${env.JAVA_HOME}/lib" />  
		<property name="build.dir" value="${basedir}/build" />  
		<property name="classes.dir" value="${build.dir}/classes" />  
		<property name="dist.dir" value="D:/contrib" />  
			  
		<!-- 基本编译路径设置 定义多个classpath-->  
		<path id="compile.classpath">  
			<fileset dir="${java.lib.dir}">  
				<include name="tools.jar" />  
			</fileset>  
			<fileset dir="D:/contrib">  
				<include name="*.jar" />  
			</fileset>  
		</path>  
		  
		<!-- 运行路径设置 -->  
		<!--path id="run.classpath">  
			<path refid="compile.classpath" />  
			<pathelement location="${classes.dir}" />  
		</path-->  
		  
		<!-- 排除java源文件的模式集 -->  
		<patternset id="no.java">  
			<exclude name="**/*.java" />  
		</patternset>  
		  
		<!-- 初始化,建立目录,将多个src目录复制到同一src目录,编译,打包完成后自动清除 -->  
		<target name="init" description="初始化,建立目录,复制文件">  
			<mkdir dir="${classes.dir}" />  
			<mkdir dir="${dist.dir}" />  
			<mkdir dir="${src.dir}" />  
			<copy todir="${src.dir}">  
					 <fileset dir="${basedir}/path1/src">  
					<include name="**/*.java" />  
				 </fileset>  
			</copy>  
			<copy todir="${src.dir}">  
				 <fileset dir="${basedir}/path2/src">  
				  <include name="**/*.java" />  
			   </fileset>  
			</copy>  
			<copy todir="${src.dir}">  
				 <fileset dir="${basedir}/path3/src">  
				  <include name="**/*.java" />  
			   </fileset>  
			</copy>  
			<copy todir="${src.dir}">  
				 <fileset dir="${basedir}/path4/src">  
				  <include name="**/*.java" />  
			  </fileset>  
			</copy>  
			<copy todir="${classes.dir}">  
				<fileset dir="${src.dir}">  
					<patternset refid="no.java" />  
				</fileset>  
			</copy>  
		</target>  

		<!-- 编译源文件-->  
		<target name="compile" depends="init" description="编译源文件">  
			<javac srcdir="${src.dir}" destdir="${classes.dir}" source="1.5" target="1.5">  
				<classpath refid="compile.classpath" />  
			</javac>  
		</target>  
		  
		<!-- 打包类文件 -->  
		<target name="jar" depends="compile" description="打包类文件">  
			<jar jarfile="${dist.dir}/${jar.file}" >  
				<fileset dir="${classes.dir}" includes="**/*.*" />  
			</jar>  
		</target>  
		  
		<!-- 清理,删除临时目录 -->  
		<target name="clean" depends="jar" description="清理,删除临时目录">  
			<delete dir="${build.dir}" />  
			<delete dir="${basedir}/.settings" />  
			<delete dir="${src.dir}" />  
			<delete dir="${basedir}/bin" />  
			<echo level="info">清理完毕</echo>  
		</target>  
		  
		<!-- 从打包后jar的文件里运行 -->  
		<!--target name="runjar" depends="jar" description="运行jar">  
			<java jar="${dist.dir}/${jar.file}" fork="yes" dir="${basedir}" />  
		</target-->  
		  
		<!-- 运行 -->  
		<!--target name="run" depends="compile" description="运行">  
			<java classname="powerwind.Sample" fork="yes" dir="${basedir}">  
				<classpath refid="run.classpath" />  
				<arg line="${param.msg}" />  
			</java>  
		</target-->  
	<!-- demo2 end-->
	
</project>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值