ant 使用

一、ant是什么?我的理解是这样的!
        1).ant相当于是执行java各种类功能的批处理程序,本身ant就是通过各种批处理命令来调用java类来自动执行相关的功能!
        2)ant也可以拿CSS相比较,起码以我现在所知道的知识点来说,这样比较还是可以说通的.ant通过Build.xml文件来存储java类执行的步骤,是可控的.就像CSS来控制html显示格式一样!然后就是通过ant内部的批处理语句开始扫描相关类执行相关功能而已!
         3)总的来说,是类似批处理和css结合的工具(宏观理解)!可能以后知识长进以后会理解的更深,到时候再做个修正!
     二、ant的具体使用
         首先当然是安装ant的jdk了...那个安装包的名字我忘记了,最近生病,记忆力下降,反正我看见它了就能认识:),找到压缩包以后,解压到指定的文件夹内就可以用了!不过要记得设置环境变量.在命令行窗口里输入(set path=bin文件所在路径;%path%),不过,只对当前命令行窗口有效!建议把path变量存储在系统变量中,方便每个用户的使用!
我在网上找了点相关资料,看了让我对环境变量的设置有了个明确的概念了!列出来做个补充!
Windows

假定Ant安装在c:\ant\目录下。下面是设定环境的命令:
set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.5.0
set PATH=%PATH%;%ANT_HOME%\bin
Unix (bash)

假定Ant安装在/usr/local/ant目录下。下面是设定环境的命令:
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.5.0
export PATH=${PATH}:${ANT_HOME}/bin
    三、关于buildfile.xml的配置
           ant的buildfile是用XML写的.每个buildfile含有一个project.一个项目可以定义一个或多个target.一个target是一系列你想要执行的(对比一下批处理).可以选择执行要执行的那个target.使用project的default属性确定缺省的执行target.
            一个target可以依赖于其他的target.例如,可能会有一个target用于编译程序,一个target用于执行程序.你在生成可执行文件之前必须先编译通过,所以用于执行程序的target依赖于编译target.ant用depends属性来处理这种依赖关系.然而,应当注意到,ant的depends属性只指定了target应该被执行的顺序-如果被依赖的target无法运行(比如执行编译的是一个错误的程序,编译无法通过!),这种depends对于指定了依赖关系的target就没有影响(是对执行顺序没有影响,并不是程序的运行结果!那当然影响很大了!).ant会依照depends属性中target出现的顺序(从左到右)依次执行每个target.然而,要记住的是只要某个target依赖于一个target,后者就会被先执行.
<target name="A"/>     <!--是对<target></target>的简写-->
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
假定我们要执行target D.从它的依赖属性来看,你可能认为先执行C,然后B,最后A被执行.刚开始我是这样认为的,但是问了张老师以后才知道错了,C依赖于B,依赖于A,以先执行A,然后B,然后C,后D被执行.(注意D的depends属性,依赖于两个target,用逗号隔开).还有今天和毛毛讨论的那个问题,一下编译两个以上的文件,也用逗号隔开!但是运行的时候,需要再去配置一个或多个target来运行第二(N)个程序!
    四、关于properties
        因为对properties还是不太了解,去网上搜索了以下的知识点作为补充:看完之后有了个概念,properties定义系统属性,ant允许使用这些属性
        Properties

一个project可以有很多的properties。可以在buildfile中用property task来设定,或在Ant之外设定。一个property有一个名字和一个值。property可用于task的属性值。这是通过将属性名放在"${"和"}"之间并放在属性值的位置来实现的。例如如果有一个property builddir的值是"build",这个property就可用于属性值:${builddir}/classes。这个值就可被解析为build/classes。

内置属性

如果你使用了<property> task 定义了所有的系统属性,Ant允许你使用这些属性。例如,${os.name}对应操作系统的名字。

要想得到系统属性的列表可参考 the Javadoc of System.getProperties 。

除了Java的系统属性,Ant还定义了一些自己的内置属性:
	basedir 		project基目录的绝对路径 (与<project>的basedir属性一样)。	ant.file 		buildfile的绝对路径。	ant.version 	Ant的版本。	ant.project.name 	当前执行的project的名字;由<project>的name属性设定.	ant.java.version 	Ant检测到的JVM的版本; 目前的值有"1.1", "1.2", "1.3" and "1.4".    
例子
<project name="MyProject" default="dist" basedir="."> 	<!-- set global properties for this build -->	<property name="src" value="."/>	<property name="build" value="build"/>	<property name="dist" value="dist"/>     	<target name="init">		<!-- Create the time stamp -->		<tstamp/>		<!-- Create the build directory structure used by compile -->		<mkdir dir="${build}"/>	</target>	  	<target name="compile" depends="init">		<!-- Compile the java code from ${src} into ${build} -->		<javac srcdir="${src}" destdir="${build}"/>	</target>		<target name="dist" depends="compile">		<!-- Create the distribution directory -->		<mkdir dir="${dist}/lib"/>		<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->		<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>	</target>		<target name="clean">		<!-- Delete the ${build} and ${dist} directory trees -->		<delete dir="${build}"/>		<delete dir="${dist}"/>	</target>	</project>
        五、关于classpath
                查阅帮助文档可以得知以下知识点:
               <classpath>
                        <pathelement path="${classpath}"/>
                        <pathelement location="lib/helper.jar"/>
               </classpath>
              location属性指定了相对于project基目录的一个文件和目录(单一路径),而path属性接受逗号或分号分隔的一个位置列表(多个路径).path属性一般用作预定义的路径.但是有的情况也需要多次用到location属性.以下是网上扩展的一些相关知识:
             classpath标签支持自己的path和location属性。所以:
	<classpath>		<pathelement path="${classpath}"/>	</classpath>
可以被简写作:
	<classpath path="${classpath}"/>
也可通过<fileset>元素指定路径。
	<classpath>		<pathelement path="${classpath}"/>		<fileset dir="lib">			<include name="**/*.jar"/><!--下午练了include和exclude,我理解的使用顺序是先include包要处理的都包括进来,然后在用exclude排除不想处理的!但是路径一定要写对!头脑的清晰-->		</fileset>		<pathelement location="classes"/>	</classpath>
上面的例子构造了一个路径值包括:${classpath}的路径,跟着lib目录下的所有jar文件,接着是classes目录。

你可能感兴趣的:(职场,休闲)