网站开发用什么框架合适,关于江西建设监督网网站迁移,网站建设培训课程,阳江seo网站推广一、前言#xff1a; 以前在做JavaEE项目的时候曾经听说过这个名字#xff0c;但是由于没有用到#xff0c;所以也没有去学习。最近在研究Android打包的时候#xff0c;看了下build.xml文件#xff0c;甚是迷糊#xff0c;于是学习一下#xff0c;稍有心得。 二、什么是…一、前言 以前在做JavaEE项目的时候曾经听说过这个名字但是由于没有用到所以也没有去学习。最近在研究Android打包的时候看了下build.xml文件甚是迷糊于是学习一下稍有心得。 二、什么是ant ant是一种基于Java的打包工具非常类似于Linux下的makefile。ant有自己的语法和规范通常用xml来承载。ant可以集成代码生成、编译、打包等功能需要说明一下ant本身并不具备这些功能只是调用者使用ant能做到编译、打包一系列流程的自动化就像生产流水线一条指令全程自动生产。 ant工具是使用Java语言编写的所以依赖jdk安装ant必须先安装好jdk。同样ant很多扩展的自定义的功能同样可以使用Java编写后续会详细介绍。 三、ant的基本语法和规范 ant的构建脚本是使用xml文件承载的缺省命名为build.xml。进入其文件所在目录可以在cmd中直接使用ant命令调用前提是先配好bin目录的环境变量。 我们先来看一下build.xml文件的基本结构 [html] view plaincopy ?xml version1.0 encodingUTF-8? project nametest defaultbuild property namefile.dir valueD:/// property filelocal.properties / loadproperties srcFileproject.properties / import filerules.xml optionaltrue / target namebuild echoruning.../echo /target target namedebug dependsbuild echo levelinfo${file.dir} debugging.../echo /target /project project 根标签。name属性表示项目名称没什么作用default属性表示默认执行命令cmd命令行中使用ant和ant default属性值本例是ant build 两种方式等效。 property 定义类标签。可以定义一些常量值需要注意定义后理论不能再修改其实可以通过第三方库修改。比如第3行定义了一个file.dir的变量值为”D://“引用时使用 ${file.dir}调用。第4行是引入一个properties文件里面定义了很多property相当于导包。 loadproperties 引用标签。功能和第4行property file/等同表示引入一个properties定义集群。好处是便于封装和管理。 import 引入标签。和loadproperties不同的是import是引入另一个构建文件包括变量和执行命令。 target 执行标签。可以在cmd命令行中直接ant target执行比如以上脚本可以执行 ant build 和 ant debug。target标签中有个depends属性表示执行命令依赖。如果要执行debug命令会自动先执行depends里面的命令。以上脚本执行 ant debug实际是执行了 ant build 和 ant debug echo 日志标签。表示日志输出能在cmd命令中打印显示level属性表示日志级别。 比较特殊的是echo中可以引用变量用法同变量调用方式${name}。 以上就是ant最基本的语法规范我们执行下ant debug命令看看结果。 分析以上执行过程cmd进入build.xml所在目录执行target名为debug的命令由于debug依赖于build所以先执行build命令打印出runing... 然后再执行debug命令下的语句打印出D:// debugging... 注意其中引用了一个变量执行完毕 四、ant的常用语法 1、文件语句 文件操作是ant中最常用的基本操作包括创建、复制、删除、遍历等。由于ant涉及最多的就是文件操作所以它的api相对来说非常丰富让我们来逐一介绍和学习。 创建mkdir标签。 传入一个文件路径直接创建出一个文件目录。然而不知为何ant没有提供创建文件的功能。 [html] view plaincopy mkdir dirD:/test/span stylefont-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255); /span 删除delete标签。删除文件或文件夹。 [html] view plaincopy delete fileD:/test/example.txt/ delete dirD:/test/ 移动move标签。包括文件重命名、文件移动、文件目录移动。 [html] view plaincopy !-- 重命名 -- move fileD:/test/example1.txt tofileD:/test/example2.txt/ !-- 移动文件至新目录新目录会自动创建 -- move fileD:/test/example2.txt todirD:/test2/ !-- 文件夹移动 -- move dirD:/test/example2.txt todirD:/test2/ 复制copy标签。文件复制。 [html] view plaincopy !-- 文件复制指定新文件名 -- copy fileD:/test/example.txt tofileD:/test/example2.txt/ !-- 文件复制指定新文件目录 -- copy fileD:/test/example.txt todirD:/test/new// !-- 文件夹复制指定新文件夹 -- copy dirD:/test/ todirD:/test/new// 2、条件语句 condition标签配合istrue或者isfalse使用。 [html] view plaincopy condition propertycheck istrue valuefalse / /condition target namebuild ifcheck echobuild running.../echo /target 稍微解释下以上语句在执行名为build的target任务时由于target中含有if的标签所以需要判断名为check的条件语句的值但是istruefalse的语句表示条件不符合echo并不会执行。如果改成istruetrueecho将执行。当然以上语句等价于 [html] view plaincopy condition propertycheck isfalse valuetrue / /condition target namebuild ifcheck echobuild running.../echo /target 需要注意下istrue和isfalse两种标签不能同时存在。 除了直接使用istrue指定条件语句的值还能动态地使用equals比较变量比如 [html] view plaincopy property nameid value99/property condition propertycheck equals arg1${id} arg2100/ /condition target namebuild ifcheck echobuild running.../echo /target 3、循环语句 ant本身并没有提供循环语句但是我们可以借助于ant-contrib.jar使用循环语句举个简单的例子 [html] view plaincopy property nameant-contrib valueE:\\Android\\android-sdk\\tools\\lib\\ant-contrib-1.0b3.jar/property taskdef nameforeach classnamenet.sf.antcontrib.logic.ForEach classpath${ant-contrib}/ target namebuild foreach list1,2,3,4,5,6,7,8,9 paramnumber delimiter, targetlog/ /target target namelog echoforeach running: ${number}/echo /target 以上语句稍微有些复杂我们一句句来理。第一句property定义一个变量即扩展jar包ant-contrib-1.0b3.jar所在的文件位置。第二句taskdef标签表示定义自定义名为foreach的标签需要引用类名和类路径这是使用foreach的前提条件必须先定义好。然后我们就可以在target任务中愉快地使用for循环了。 接下来我们来看foreach语句的内容list标签 delimiter标签构成循环的条件这里是循环9次每次循环创建一个名为number的数字变量同时执行log任务打印一句话结果如下 4、自定义语句 ant的魅力所在之处就是强大的自定义语句比如上面的foreach语句。ant官方库只定义了一些简单的语句但是在实际项目中远远不足以满足我们的需要比如新建一个文件。这里我们就用自定义语句来实现下。 ant的原理是每个语句标签映射一个java类文件每个标签里的属性则映射java类的变量有点类似spring中xml映射javabean。每个ant标签映射的java类文件不是随意编写的有一定的规范。 在ant安装目录下的lib文件目录中有个名为ant.jar的包这个就是ant的规范标准库自定义语句Java类都需要依赖它来编译同时每个语句必须继承其中名为Task.java的基类复写execute方法执行自定义操作。 [java] view plaincopy package com.ant.test; import java.io.File; import java.io.IOException; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; public class FileCreater extends Task{ private String fileName; public void setName(String fileName){ this.fileName fileName; } Override public void execute() throws BuildException { try { new File(fileName).createNewFile(); } catch (IOException e) { log(create file fileName failed!); } log(create file fileName successful!); super.execute(); } } 上面定义了创建文件的自定位标签把这个java文件打成jar包然后就可以在build.xml使用了xml内容如下 [html] view plaincopy property namefileJar valueD:/file.jar/property taskdef namefilecreater classnamecom.ant.test.FileCreater classpath${fileJar}/ target namebuild filecreater nameD:/test.txt/ /target 以上执行的操作是创建一个路径为D:/test.txt的文件。filecreater是映射FileCreater.java的自定义标签name属性传入文件路径名会自动 反射调用FileCreater.java中的setName方法注入参数值。在FileCreater.java中有个log打印输出方法可以在cmd中输出极大方便我们的调试。执行结果如下 ------------------------------------------------------------------------------------------------ 好了ant相关的就先写到这里权当抛砖引玉^-^ http://blog.csdn.net/MegatronKings/article/details/48012125转载于:https://www.cnblogs.com/luolizhi/p/5514170.html