ant笔记(二)ant的属性使用与引用外部变量,集成一个编译,拷贝,打包,运行的任务链

build.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
	default指定默认执行的任务
	target表示的是每一项具体的任务
	depends表示依赖于另一个任务A,在执行B的是会去先执行A

	创建ant项目的流程
		1.创建文件夹(ant标准)
			src:存放源码
			build:所有的文件信息都保存在这个文件夹
			classes:编译好的所有文件保存在这个文件夹
			dist:存放project.jar
		2.将src文件夹的数据拷贝到build/src
		3.编译源代码
		4.将源代码打包为jar
		5.直接运行程序
		
	ant本身的属性:
		ant.file
		ant.home
		ant.java.version
		ant.project.name
		ant.version
		basedir
		
	eclipse中配置ant
		1.Ant:修改Documentation的URL
		2.Ant->Runtime;设置Ant Home Entries为本地的Ant文件夹
		3.新建javaproject
		4.创建build.xml文件(open with Ant Edit文件)
		5.建立如下project
		6.右键执行
		
-->
<!-- 如果文件夹换名,应先执行删除文件夹deleteDir任务,在更换build文件名 -->
<project default="execute">

	<!--使用属性定义相应的路径时,一定要使用location,会转换系统的分隔符-->
	<property name="build.classes" location="${build.dir}/classes"></property>
	<property name="build.src" location="${build.dir}/src"></property>
	<property name="build.dist" location="${build.dir}/dist"></property>
	<!-- 定义键值对实例 
	<property name="execute.class" value="ant.zttc.edu.cn.HelloWorld"></property>
	-->
	
	<!-- 路径不建议放在properties中定义;如果属性太多可以在外部文件中定义 -->
	<property file="build.properties"></property>
	
	<!--把环境变量中的参数导出到env这个变量中进行使用-->
	<property environment="env"></property>
	<target name="test">
		<echo>${ant.home}</echo>
		<echo>${ant.version}</echo>
		<echo>${ant.java.version}</echo>
		<echo>${env.catalina_home}</echo>
		<echo>${env.java_home}</echo>
		<echo>${env.OS}</echo>
	</target>
	
	<!-- 1.使用文件集:包含所有目录的所有文件 -->
	<fileset id="src.path.set" dir="src" includes="**/*.*"></fileset>
	<!-- 2.使用文件集:包含所有目录的所有文件 -->
	<fileset id="src.path" dir="src">
		<!--包含的文件-->
		<include name="**/*.*"/>
		<!--不包含测试文件-->
		<exclude name="**/Test*"/>
		<exclude name="**/test*"/>
	</fileset>
	
    <target name="deleteDir">
		<delete dir="${build.dir}"></delete>
    </target>
	<target name="init" depends="deleteDir">
		<mkdir dir="${build.dir}"/>
		<mkdir dir="${build.src}"/>
		<mkdir dir="${build.classes}"/>
		<mkdir dir="${build.dist}"/>
	</target>
	<!-- 如果目标文件存在,则不执行-->
	<target name="copySrc" depends="init">
		<copy todir="${build.dir}/src/">
			<fileset refid="src.path"></fileset>
		</copy>
	</target>
	<!--编译源文件-->
	<target name="compile" depends="init">
		<javac destdir="${build.classes}" srcdir="src"></javac>
	</target>
	
	<!--打jar包;为了让jar可运行,需要加入MANIFEST.MF文件中加入Main-Class-->
	<target name="jar" depends="compile">
		<jar destfile="${build.dist}/${jar.name}" basedir="${build.classes}">
			<manifest>
				<attribute name="Main-Class" value="${execute.class}"/>
				<attribute name="Build-By" value="Sid"/>
			</manifest>
		</jar>
	</target>
	
	
	<!--执行任务,基于jar和copySrc任务-->
	<target name="execute" depends="jar,copySrc">
		<echo>基于类路径的classname来完成执行</echo>
		<java classname="${execute.class}" classpath="${build.classes}">
			<!--main函数的参数-->
			<arg value="张三"/>
			<arg value="李斯"/>
		</java>
		
		<echo>基于jar文件来完成执行</echo>
		<java jar="${build.dist}/${jar.name}" fork="true">
			<arg value="张三"/>
			<arg value="李斯"/>
		</java>
	</target>
</project>

build.properties

build.dir=build
execute.class=ant.zttc.edu.cn.HelloWorld
jar.name=hello.jar


你可能感兴趣的:(ant)