黑马程序员 ---------------------- ANT 学习笔记
来源:互联网 发布:手机网络远程监控系统 编辑:程序博客网 时间:2024/06/10 17:34
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
</pre><p></p><p></p><p></p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)"><span style="white-space:pre"></span>ant——<span style="margin:0px; padding:0px; line-height:1.5">Apache Ant,是一个将</span><a target=_blank target="_blank" href="http://baike.baidu.com/view/37.htm" style="margin:0px; padding:0px; color:rgb(7,93,179)">软件</a><span style="margin:0px; padding:0px; line-height:1.5">编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache</span><a target=_blank target="_blank" href="http://baike.baidu.com/view/37.htm" style="margin:0px; padding:0px; color:rgb(7,93,179)">软件</a><span style="margin:0px; padding:0px; line-height:1.5">基金会所提供。</span></p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)"><span style="margin:0px; padding:0px; line-height:1.5">这里就附上学习过程中的一个例子,里面有很好的注释。查看注释就基本上知道每个目标target的作用目的了。</span></p><p style="margin:10px auto; padding-top:0px; padding-bottom:0px; line-height:19px; font-size:13px; font-family:Verdana,Arial,Helvetica,sans-serif; background-color:rgb(254,254,242)"><span style="margin:0px; padding:0px; line-height:1.5"></span></p><pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?><project name="myAntProject" default="prepross" basedir="."> <description> basedir="." 定义的是默认目录为当前目录</description> <description> ant 也是可以调试的</description> <property name="hello" value="pro"/> <property name="mk" value="my"/> <target name="init"> <mkdir dir="${hello}"/> </target> <target name="second" depends="init"> <mkdir dir="${mk}"/> </target> <target name="prepross" depends="init,second"> <delete dir="${hello}"/> <delete dir="${mk}"/> </target> <target name="myCompile" description="编译文件" depends="second"> <javac srcdir="src" destdir="${mk}" includeAntRuntime="false"></javac> </target> <description> 创建jar文件 destfile="${hello}/package.jar" 存放的位置 basedir="${mk}" 编译好的文件来源 </description> <target name="dist" depends="myCompile"> <jar destfile="${hello}/package.jar" basedir="${mk}"></jar> </target> <description> value="${user.name}" ant 提供的属性 可以直接用 attribute name="Main-Class" value="package1.JframeTest.java"/> 指定jar的主类 name="Main-Class"固定的要大写 </description> <target name="mkjarrun" depends="myCompile"> <tstamp description="时间戳 这里先获得时间 后面再使用 ${DSTAMP}"></tstamp> <jar destfile="${hello}/package-${DSTAMP}.jar" basedir="${mk}"> <manifest> <attribute name="Built-By" value="${user.name}"/> <attribute name="Main-Class" value="package1.JframeTest"/> </manifest> </jar> </target> <target name="deltefile" description="删除文件"> <delete file="${hello}/package.jar"></delete> </target> <description> 复制和移动问文件以及目录 move copy tofile="C://A2.java"可以冲命名 todir="c://" 不可以重新命名 拷贝到目录下 </description> <target name="copyfile"> <copy file="src/package1/A.java" tofile="C://A2.java" ></copy> </target> <target name="movefile" description="相当于文件的剪切功能"> <move file="src/package1/A.java" tofile="c://ss.java"></move> </target> <target name="zipfile"> <zip destfile="${hello}/package.zip" basedir="${mk}"></zip> </target> <property name="new" value="newpackage"></property> <target name="mknew"> <mkdir dir="${new}"/> </target> <description> 解压文件 src="${hello}/package.zip"指定文件的位置 dest="${new}" 指定解压到哪个目录下 </description> <target name="unzipfile" depends="mknew"> <unzip dest="${new}" overwrite="true" src="${hello}/package.zip" ></unzip> </target> <property name="replacefile" value="input.txt"></property> <description> summary="on" 属性设置为true或者on 就可以输出找到和替换字符串实例的数目 </description> <target name="replacewords" description="替换文件中替换字符串"> <replace file="${replacefile}" token="l" value="替换" summary="on"></replace> </target> <description> 模式匹配 (当前目录) src*/*.java 将匹配带src前缀的任意数目的目录的所有java文件(当前目录包括其子目录) 还有一种模式结构:**,它匹配任意数目的目录 例如模式 **/*.java将匹配当前目录下的所有java文件 </description> <property name="dangqian" value="src"></property> <target name="copyjavafile" description="把src目录下的所有java文件全都拷贝到pro目录下"> <copy todir="${hello}"> <fileset dir="${dangqian}"> <include name="**/*.java"/> </fileset> </copy> </target> <description> ant自定义任务 </description> <taskdef name="myFileSortExamole" classname="MyOwn.FileSorter" classpath="bin"> </taskdef> <target name="FileSort"> <myFileSortExamole srcFile="input.txt" destFile="output.txt"> </myFileSortExamole> </target> </project>
关于ant的介绍其实百度百科介绍相当全面,比课本上都好。 ANT
http://baike.baidu.com/link?url=7GfHJUNFHIeVvEdz_I69_3fnnM429F-Xf2x3YWirkqKO_12xKm4ui0PEttmPyS-Mi2Z6zQMMlya2a3buA-bJG_
自定义ant任务,首先要把ant.jar这个jar包引用到工程目录里,之后编写自己的ant任务类的时候只需要继承 org.apache.tools.ant.Task;
之后Overwrite 它的execute方法即可。这要注意自己的task类中的成员变量就好似再ant build.xml中的各个属性名,使用的时候也一样,属性再xml中赋值之后方法会自动调用set方法。
package MyOwn;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.ListIterator;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Task;/** * @author Tai * 自定义ant功能,文件中的没一行排序 * srcFile destFile 再ant中定义好之后会自动掉set方法 这里就会有值了 */public class FileSorter extends Task{ private File srcFile; private File destFile; public File getSrcFile() { return srcFile; } public void setSrcFile(File srcFile) { this.srcFile = srcFile; } public File getDestFile() { return destFile; } public void setDestFile(File destFile) { this.destFile = destFile; } @Override public void execute() throws BuildException { try { BufferedReader fromFile = new BufferedReader(new FileReader(srcFile)); BufferedWriter toFile = new BufferedWriter(new FileWriter(destFile)); String line = fromFile.readLine(); List<String> list = new ArrayList<String>(); while(line != null) { list.add(line); line = fromFile.readLine(); } Collections.sort(list); for (ListIterator<String> li = list.listIterator();li.hasNext();) { String str = li.next(); toFile.write(str); toFile.newLine(); } toFile.close(); fromFile.close(); } catch (Exception e) { e.printStackTrace(); } } }FileSorter
上面是自己定义的文件按照每行排序的task 下面是再XML中使用它。
<description> ant自定义任务 </description> <taskdef name="myFileSortExamole" classname="MyOwn.FileSorter" classpath="bin"> </taskdef> <target name="FileSort"> <myFileSortExamole srcFile="input.txt" destFile="output.txt"> </myFileSortExamole> </target>
之后就可以再eclipse的ant试图下点击运行自己ant程序了,ant的强大之处并非仅仅再次,而在于使用ant可以成为我们的自动化构建工具,这点的实用价值很高哦。
0 0
- 黑马程序员 ---------------------- ANT 学习笔记
- 黑马程序员---学习笔记
- 黑马程序员----学习笔记
- 黑马程序员----学习笔记
- 黑马程序员---学习笔记
- 黑马程序员------IO学习笔记
- 黑马程序员-javaIO学习笔记
- 黑马程序员---反射学习笔记
- 黑马程序员--多线程学习笔记
- 黑马程序员__SQL学习笔记
- 黑马程序员 学习笔记1
- 黑马程序员 学习笔记2
- 黑马程序员--Jquery 学习笔记
- 【黑马程序员】js(学习笔记)
- 【黑马程序员】Dom(学习笔记)
- “黑马程序员”学习笔记三
- “黑马程序员”学习笔记四
- “黑马程序员”学习笔记五
- Servlet 单例多线程
- Spring MVC : Java模板引擎 Thymeleaf (三)
- 考研与就业——答学弟学妹问
- SqlDependency和SqlCacheDependency缓存的用法及具体步骤
- karma在windows下安装
- 黑马程序员 ---------------------- ANT 学习笔记
- linux时钟问题小结
- TCP、UDP和HTTP
- 计算机系统要素:第六章 Part1 汇编编译器(nonsymbol)
- 技术帖:如何在高强度的工作、学习环境中健康、快乐、有效率地生活--健康篇
- ASP.NET中url传递中文的解决方案
- Houdini 导出.ass文件
- HDU 1405 The Last Practice【注意输出格式】
- python 读文件