Android脚本打包之ant语法
2013-03-21 21:44
246 查看
以下内容整理自网上相关文章,详情见最后链接:
default为默认的target,就是任务;
basedir就是基路径。一般为"."
如果变量是路径的话,则可以这么定义:
<property name="src" value="src" />
这么定义就可以不用担心"\"和"/"的问题了。
name的值为target的名称,可以在编译的时候指定是完成哪个target,
否则采用project那里定义的default。
depends则定义了依赖关系,值为其他target的name。多个依赖关系用","隔开,
顺序执行完定义的依赖关系,才会执行这个target。
target在build.xml中定义的顺序无所谓,但是depends中的顺序必须正确。
这个任务有个特点,它仅仅编译那些需要编译的源文件。如果没有更新,就不需要编译,
速度就加快。
编译文件和ant使用的同一个jvm,大大减少资源浪费。
还可以指定classpath。classpath中指定文件夹,然后指定包含的文件的规则。
manifest指定manifest中文件的属性,比如可以指定Main-Class
删除classes文件夹
把fileset文件夹下面的所有文件拷贝到 backup.dir
正在使用,所以要新打开一个虚拟机。
encoding="utf-8" charset="utf-8" 都需要,否则javadoc是乱码。
packageset一定要设定,否则找不到源码,格式可以是**.意思是所有源码。
但是用宏的话,就可以浓缩成以下代码
batchtest为批量test,需要设置符合条件的类名称。
在进行单元测试之前必须先进行编译。
配置的classpath指向一个testpath的path,就是上面哪一条里面讲的。
原文链接:
点击打开链接 介绍语法的一篇文章
点击打开链接 也介绍语法的一篇文章
点击打开链接
博客园的一篇介绍ant语法的文章,比较详细,格式清晰
1.ant的编译文件默认为build.xml
2.build.xml的根节点为<project>
<project name="AntStudy" default="init" basedir=".">name为工程名称;
default为默认的target,就是任务;
basedir就是基路径。一般为"."
3.property可以定义变量
<property name="test" value="shit" />引用的时候这么引用${test}
如果变量是路径的话,则可以这么定义:
<property name="src" value="src" />
这么定义就可以不用担心"\"和"/"的问题了。
4.定义target:
<target name="compile" depends="init"><!--other command--></target>
name的值为target的名称,可以在编译的时候指定是完成哪个target,
否则采用project那里定义的default。
depends则定义了依赖关系,值为其他target的name。多个依赖关系用","隔开,
顺序执行完定义的依赖关系,才会执行这个target。
target在build.xml中定义的顺序无所谓,但是depends中的顺序必须正确。
5.编译源代码:
<javac srcdir="src" destdir="classes"> <classpath> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> </classpath> </javac>这个标签自动寻找src中以.java为扩展名的文件,并且调用javac命令。
这个任务有个特点,它仅仅编译那些需要编译的源文件。如果没有更新,就不需要编译,
速度就加快。
编译文件和ant使用的同一个jvm,大大减少资源浪费。
还可以指定classpath。classpath中指定文件夹,然后指定包含的文件的规则。
6.创建jar文件:
<jar destfile="antstudy.jar" basedir="classes"> <manifest> <attribute name="Main-Class" value="bean.ant.TestAnt" /> </manifest> </jar>
manifest指定manifest中文件的属性,比如可以指定Main-Class
7.创建目录:
<mkdir dir="classes" />创建dir的文件夹。
8.删除目录:
<delete dir="classes" />
删除classes文件夹
9.拷贝文件:
<copy todir="${backup.dir}"> <fileset dir="${classes.dir}"/> </copy>
把fileset文件夹下面的所有文件拷贝到 backup.dir
10.执行一个类:
<java dir="${build}" classname="bean.ant.TestAnt" fork="true" />dir为工作文件夹,classname为类名。fork要设置为true。因为你编译放class的文件夹
正在使用,所以要新打开一个虚拟机。
11.生成javadoc:
<javadoc sourcepath="${src}" destdir="${docs}/javadoc" encoding="utf-8" charset="utf-8" windowtitle="Spring Framework" source="1.5" access="package" author="true" version="true" use="true" defaultexcludes="true"> <doctitle> <![CDATA[<h1>Ant Test</h1>]]></doctitle> <bottom> <![CDATA[<i>Copyright (c) 2002-2007</i>]]></bottom> <packageset dir="${src}"> <include name="bean/ant/**" /> </packageset> </javadoc>
encoding="utf-8" charset="utf-8" 都需要,否则javadoc是乱码。
packageset一定要设定,否则找不到源码,格式可以是**.意思是所有源码。
12.path的使用,可以定义path对象,在其他地方可以直接复用。
<path id="1"> <pathelement location="."/> <pathelement location="./lib/junit.jar"/> </path> <path id="2"> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> </path> <javac srcdir="./src" destdir="./classes"> <classpath refid="1"/> </javac> <javac srcdir="./src" destdir="./classes"> <classpath refid="1"> <pathelement location="."/> <pathelement location="./lib/junit.jar"/> </classpath> </javac>
14.自定义宏MacroDef:
在Ant中是非常实用的,它的作用相当于java里面的为防止代码重复而提取的公共方法。<target name="build_math" depands="base"> <echo message="... building jck-api-math-cases now ..."/> <javac debug="false" destdir="bin" source="1.5" target="1.5"> <src path="./java_math"/> <classpath refid="java_jck.classpath"/> </javac> </target> <target name="make_math" depends="build_math"> <echo message="... make math jar ...."></echo> <jar jarfile="math.jar" basedir="./bin"/> <move file="./math.jar" tofile="./lex/math.jar" overwrite="true"/> </target> <target name="build_io" depands="base"> …… </target> <target name="make_io" depends="build_io"> …… </target> ……
但是用宏的话,就可以浓缩成以下代码
<macrodef name="dealWithTestCases"> //macrodef的定义,定义了name属性 <attribute name="tarName" /> //参数定义 <attribute name="srcPath" /> <!--element name="dex-elements"/--> <sequential> //实际执行的内容在<sequential>里 <echo message="... building jck-api-@{tarName}-cases now ...."/> <javac debug="false" destdir="bin" source="1.5" target="1.5" includeantruntime="on"> <src path="./@{srcPath}"/> <classpath refid="java_jck.classpath"/> <excludesfile name="exclude.@{tarName}"/> </javac> <echo message="... make @{tarName} jar ..."></echo> <jar jarfile="@{tarName}.jar" basedir="./bin"/> <move file="./@{tarName}.jar" tofile="./lex/@{tarName}.jar" overwrite="true"/> </sequential> </macrodef> <target name="lex" depands="base"> <dealWithTestCases tarName="math" srcPath="./java_math"/> //外部调用宏 <dealWithTestCases tarName="io" srcPath="./java_io"/> …… </target>
13.单元测试:
<junit printsummary="yes"> <classpath refid="testpath" /> <batchtest> <fileset dir="${test}"> <include name="**/*Test.java" /> </fileset> </batchtest> </junit>
batchtest为批量test,需要设置符合条件的类名称。
在进行单元测试之前必须先进行编译。
配置的classpath指向一个testpath的path,就是上面哪一条里面讲的。
原文链接:
点击打开链接 介绍语法的一篇文章
点击打开链接 也介绍语法的一篇文章
点击打开链接
博客园的一篇介绍ant语法的文章,比较详细,格式清晰
相关文章推荐
- 通过ant脚本编译打包android工程
- Eclipse下配置Ant脚本 自己主动打包带签名的Android apk
- gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)
- Android 热修复三部曲之基本的Ant打包脚本
- Android ant 自动打包脚本:自动替换友盟渠道、版本号、包名
- (转)通过ant脚本,编译打包android工程
- Android打包之将bat脚本转换成ant脚本
- Android ant 脚本打包(一)
- android 应用 Ant脚本自动编译、打包、代码混淆、签名、安装等
- 脚本ANT自动打包Android应用(方便多渠道发布)
- Android ant自动打包脚本:自动替换友盟渠道、版本号、包名
- gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)
- Android项目中Ant打包脚本编写
- (转)通过ant脚本,编译打包android工程
- Android最新ant打包build脚本
- android ant脚本打包apk
- 使用Android.bat生成ant打包脚本
- 脚本ANT自动打包Android应用(方便多渠道发布)
- Android自动打包、签名、优化、上传ANT脚本
- Android 热修复三部曲之基本的Ant打包脚本