首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

惯用ant任务

2012-07-05 
常用ant任务1.project 根结点?? 基本属性:name、default、basedir。?? name:??? 项目名称(可选)?? default:

常用ant任务

1.project 根结点
?? 基本属性:name、default、basedir。
?? name:??? 项目名称(可选)?? default: 默认开始执行的target。(必需)?? basedir: 用于计算所有其他路径的基路径。可以被basedir property覆盖。当覆盖时,该属性被忽略。如果属性和basedir property都没有设定,就使用build.xml的父目录。一般basedir=".",设置为build.xml所在的目录。(可选)?2.target
?Attribute属性?Description属性值内容?Required?name?target的名字?Y?depends?需要依赖的其他target?N?description?关于target功能的简短描述?N?if?为了执行本target而被设置的属性的名字?N?unless?为了执行本target而不被设置的属性的名字?N????2.1 依赖关系depands
?????? <target name="A"/>
?????? <target name="B" depends="A"/>
?????? <target name="C" depends="B"/>
?????? <target name="D" depends="C,B,A"/>
?????? 当执行target D,则先执行A,再B,然后C,最后D。
???????一个target只能被执行一次,即使有多个target依赖于它。????2.2 if,unless
?????? if属性表示该属性内容的变量如果已经被设置了,则可以执行本target;
?????? unless属性则表示该属性内容的变量如果还没有被设置,则可以执行本target。
?????? 伪代码:
?????? //if="ready"??????????????????? //unless="ready"
?????? if(ready == "ok"){????????????? if(ready == null){
????????? execute target;???????????????????? execute target;?
?????? }else {????????????????????????????????? }else {
????????? skip;??????????????????????????????????????? skip;
?????? }??????????????????????????????????????????? }???????如果没有if或unless属性,target总会被执行。??? 2.3 description属性
?????? 可选的description属性可用来提供关于target的一行描述,可由-projecthelp命令行选项输出?3. task?? 常用的task:???3.1 创建目录mkdir
?????? 创建一个目录,如果其父目录不存在,也会被同时创建。
?????? <mkdir dir="build/classes"/>
???????
?????? <target name="init">
????????? <mkdir dir="${dist.dir}" />
??????????? <mkdir dir="${dist.classes.dir}" />
??????????? <mkdir dir="${dist.webapps.dir}" />
?????? </target>??? 3.2 删除目录delete
?????? <delete includeEmptyDirs="true">
??????????? <fileset dir="${build}"/>
?????? </delete>??????? <target name="clean" description="clean up" >
??????????? <delete dir="${build}"/>
??????????? <delete dir="${dist}"/>
?????? </target>??? 3.3 copy文件或目录
?????? <copy file="file" tofile="file.bak"/>??????? <copy file="config.xml" todir="${dist.classes.dir}"/>??????? <copy todir="${targetdir}">
??????????? <fileset dir="${sourcedir}"/>
?????? </copy>??????? <target name="copy-resources" depends="clean">
??????????? <copy todir="${targetdir}">
??????????????? <fileset dir="${sourcedir}">
??????????????????? <exclude name="**/**/*.java" />
??????????????? </fileset>
??????????? </copy>
?????? </target>??? 3.4 move文件或目录
?????? <move file="file" tofile="file.bak"/>??????? <move todir="${targetdir}">
??????????? <fileset dir="${sourcedir}"/>
?????? </move>??????? <move todir="${targetdir}">
??????????? <fileset dir="${sourcedir}">
???????????????? <include name="**/**/*.java" />
??????????? </fileset>
?????? </move>????3.5 compile
?????? <path id="libraries">
??????????? <fileset dir="${libdir}">
???????????????? <include name="*.jar" />
??????????? </fileset>
?????? </path>
?????? <target name="compile" depends="copy-resources">
??????????? <javac srcdir="${sourcedir}"
?????????????????? destdir="${targetdir}"
?????????????????? classpathref="libraries" />
??????????? <jar destfile="${jardir}/my.jar" basedir="${targetdir}"/>
?????? </target>????3.6 jar
?????? <jar destfile="${jardir}/my.jar" basedir="${targetdir}"/>??????? <jar destfile="${dist}/lib/app.jar">
??????????? <fileset dir="${build}/classes"
??????? excludes="**/Test.class"
???????? />
????????   <fileset dir="${src}/resources"/>
?????? </jar>
4. 变量property?? <property name="sourcedir" value="${basedir}/src" />
?? <property name="build"???? location="build" />
?? 除了可以使用自定义的变量,还可以使用java系统属性, 例如${os.name}对应操作系统的名字,以及Ant内置属性:???? basedir??????????????????? ?<project>的basedir属性
?? ant.file????????????????????? buildfile的绝对路径
?? ant.version?????????????? Ant的版本
?? ant.project.name???? 当前执行的project的名字;由<project>的name属性设定
?? ant.java.version????? Ant检测到的JVM的版本?5. build.xml example<?xml?version="1.0"?encoding="UTF-8"??>?
<project?default="junitTest"?name="myProject"?basedir=".">?

????????<property?name="sourcedir"?value="${basedir}/src"?/>?
????????<property?name="targetdir"?value="${basedir}/WEB-INF/classes"?/>?
????????<property?name="libdir"?value="${basedir}/WEB-INF/lib"?/>?
?????????
????????<path?id="libraries">?
????????????????<fileset?dir="${libdir}">?
????????????????????????<include?name="*.jar"?/>?
????????????????</fileset>?
????????</path>?
?????????
?????????
????????<target?name="junitTest"?depends="compile">?
????????????????<java?classname="junit.textui.TestRunner"?>?
????????????????????????<classpath>?
????????????????????????????????<path?refid="libraries"?/>?
????????????????????????????????<path?location="${targetdir}"?/>?
????????????????????????</classpath>?
????????????????????????<arg?value="can.junit.HibernateDemoTest"?/>?
????????????????</java>?
????????</target>?

????????<target?name="compile"?depends="copy-resources">?
????????????????<javac?srcdir="${sourcedir}"?
????????????????????????destdir="${targetdir}"?
????????????????????????classpathref="libraries"?/>?
????????</target>?
????????????????
????????<target?name="copy-resources"?depends="clean">?
????????????????<copy?todir="${targetdir}">?
????????????????????????<fileset?dir="${sourcedir}">?
????????????????????????????????<exclude?name="**/**/*.java"?/>?
????????????????????????</fileset>?
????????????????</copy>?
????????</target>?
?????????
????????<target?name="clean"?>?
????????????????<delete?dir="${targetdir}"?/>?
????????????????<mkdir????dir="${targetdir}"?/>?
????????</target>?
</project>

热点排行