⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ant入门教程.htm

📁 google新推出的手机开发平台的中文文献
💻 HTM
📖 第 1 页 / 共 4 页
字号:
                        href="http://www.apache.org/">http://www.apache.org/</A>。</DIV>
                        <DIV>其次,解压缩文件,放到指定的系统目录中,例如C:\Ant。</DIV>
                        <DIV>再次,将其添加到path,以便从命令行使用。(一些IDE,例如Eclipse可以不需要设置path,而通过IDE相关设置将Ant添加到path中。)</DIV>
                        <DIV>再次,设置一些环境变量指向JDK以及ANT。</DIV>
                        <DIV>最后,添加需要的可选库。</DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>在Windows安装过程(以笔者的安装过程为例)</DIV>
                        <DIV>&nbsp;&nbsp;&nbsp;&nbsp;下载apache-ant-1.6.5-bin.zip到本地硬盘,解压缩之后将文件夹命名为Ant,放在C:\Ant中。这个目录就是Ant主目录。</DIV>
                        <DIV>应该将主目录中的bin目录添加到path属性中,这样就可以在命令行中调用ant命令,ANT_HOME是批处理文件所在目录的上级目录。最好明确设定。</DIV>
                        <DIV><SPAN 
                        style="COLOR: black">现在许多工具已经集成了特定版本的</SPAN><SPAN 
                        style="COLOR: black">Ant</SPAN><SPAN 
                        style="COLOR: black">,一些操作系统甚至默认的已经安装了</SPAN><SPAN 
                        style="COLOR: black">Ant</SPAN><SPAN 
                        style="COLOR: black">。所以,你的系统中可能已经安装了</SPAN><SPAN 
                        style="COLOR: black">Ant</SPAN><SPAN 
                        style="COLOR: black">。</SPAN></DIV>
                        <DIV>首先可以通过运行以下命令:<BR><STRONG>ant 
                        -version</STRONG><BR>和<BR>ant -diagnostics 
                        <BR>来确定。我们推荐您不设置CLASSPATH来运行Ant命令。如果任何版本的Ant可以从CLASSPATH加载 
                        ,这时就会由于加载了不兼容的类而产生许多错误。</DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>一些其他问题请参阅Ant的FAQ设置。</DIV>
                        <DIV>正常情况下,执行ant ?Cversion即可显示Ant版本,则说明安装配制成功:</DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/ea29812585e24474a75be50e7407e4be.png"></DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><STRONG>5.<SPAN 
                        style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        </SPAN></STRONG><STRONG>运行第一个构建文件:</STRONG></DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt">首先创建一个Java工程,名为AntProject,工程中源文件和目标文件是分开的,分别为文件夹src和bin,然后创建一个Java类文件,类名为</DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt">com.neusoft.test.AntTest,只是为了测试,所以类的内容很简单:</DIV>
                        <DIV style="MARGIN-LEFT: 21pt">package 
                        com.neusoft.test;</DIV>
                        <DIV style="MARGIN-LEFT: 21pt">/**</DIV>
                        <DIV style="MARGIN-LEFT: 21pt">&nbsp;*This is just a 
                        test class.</DIV>
                        <DIV style="MARGIN-LEFT: 21pt">&nbsp;*/</DIV>
                        <DIV style="MARGIN-LEFT: 21pt">public class 
                        AntTest{</DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        public static void main(String[] args){</DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        for(int i=0;i&lt;args.length;i++){</DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        System.out.println(args[i]);</DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        }</DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        }</DIV>
                        <DIV style="MARGIN-LEFT: 21pt">}</DIV>
                        <DIV style="MARGIN-LEFT: 21pt">&nbsp;</DIV>
                        <DIV 
                        style="MARGIN-LEFT: 21pt"><STRONG>然后我们在工程的路径下面建立一个构建文件</STRONG><STRONG>build.xml</STRONG><STRONG>,内容如下:</STRONG></DIV>
                        <DIV>&lt;?xml version="1.0" ?&gt;</DIV>
                        <DIV>&lt;project name="structured" default="archive" 
                        &gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;target 
                        name="init"&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;mkdir 
                        dir="build/classes" /&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;mkdir dir="dist" 
                        /&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;/target&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;target name="compile" 
                        depends="init" &gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&nbsp;&nbsp;&lt;javac 
                        srcdir="src" destdir="build/classes"/&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt"></DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;/target&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;target name="archive" 
                        depends="compile" &gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;jar 
                        destfile="dist/project.jar"</DIV>
                        <DIV style="TEXT-INDENT: 21pt">basedir="build/classes" 
                        /&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;/target&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;target name="clean" 
                        depends="init"&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;delete dir="build" 
                        /&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;delete dir="dist" 
                        /&gt;</DIV>
                        <DIV style="TEXT-INDENT: 21pt">&lt;/target&gt;</DIV>
                        <DIV>&lt;/project&gt;<BR></DIV>
                        <DIV>构建文件说明如下图:</DIV>
                        <DIV style="TEXT-INDENT: 21pt"><IMG alt="" 
                        src="Ant入门教程_files/d13b06a92da34475a024ee7923683186.png"></DIV>
                        <DIV><BR><BR>关于XML的知识,请参考其他书籍,这里不做介绍。</DIV>
                        <DIV>以上创建完成后,目录结构如下图:<BR><BR></DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/18957dabfc4747ea9fa861b1101371af.png"></DIV>
                        <DIV><BR>&nbsp;</DIV>
                        <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ant构建文件总是有一个&lt;project&gt;元素做为根元素,它有两个属性,name和default,&lt;target&gt;元素是&lt;project&gt;元素的子元素,可以有多个,它有两个属性,name和depends,&lt;target&gt;元素包含的元素就是一些任务元素。<BR><BR></DIV>
                        <DIV>&lt;target&gt;可以由命令行进行显示的调用,也可以在内部使用如可以直接调用ant 
                        init、ant 
                        compile等。如果不写参数,则默认的build文件是build.xml,默认的目标是&lt;project&gt;的default属性定义的目标。目标的名称是唯一的,可以是任意字符串。</DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>下面我们先运行一下这个Ant构建,再讲解其他的内容,进入工程目录,执行</DIV>
                        <DIV>ant</DIV>
                        <DIV>这里就相当于执行默认的目标,也就是&lt;project name="structured" 
                        default="archive" &gt;中的archive目标。</DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/bf58caa3631043c9934e37a8c6842cd3.png"></DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>这里说明了首先初始化创建两个目录,然后编译了一个JAVA文件,然后进行了打包的操作。</DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV><STRONG>这里讲解一下如果构建失败了怎么办?</STRONG></DIV>
                        <DIV>首先有可能是XML语法书写不正确(将&lt;target&gt;写成&lt;targe&gt;),或者在任务执行过程中出现了错误(.java文件中包含编译错误),或者任务名称书写错误(将&lt;javac&gt;写成&lt;javacc&gt;)等等,这些都不是Ant的错误,不需要填写Bug 
                        Report。写XML时一定要细心,一些IDE已经有验证功能,可以很好的防止书写的错误。</DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV><STRONG>出现错误时,可以使用</STRONG></DIV>
                        <DIV>ant ?Cverbose</DIV>
                        <DIV>或者</DIV>
                        <DIV>ant ?Cdebug来获取更加详细的构建信息,以解决问题。</DIV>
                        <DIV>下图是使用ant ?Cverbose时的输出,使用ant 
                        ?Cdebug将获取比这更详细的信息,这里就不举例了。</DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/457f2ee754f04d1380a08a6bc45e55b9.png"></DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>本例中直接使用了软件工程中的构建结构,使用src作为源文件目录,build/class作为中间生成文件,以dist作为可发布文件。在最后把一些可执行文件可以放在bin目录中。此时目录结构如下图所示:</DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/3112c28771af45a3be22d7e26e77836d.png"></DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>我们需要一种办法来确定某些任务先执行,而有些任务后执行,比如必须先编译,才能执行程序或者打包。我们在声明目标的时候,就在其依赖属性中列出其依赖关系:</DIV>
                        <DIV>&lt;target name="compile" depends="init" &gt;</DIV>
                        <DIV>&lt;target name="archive" depends="compile" 
                        &gt;</DIV>
                        <DIV>&lt;target name="clean" depends="init"&gt;</DIV>
                        <DIV>如果一个目标依赖与多个其他目标,需要将它们都写到依赖属性中,例如:</DIV>
                        <DIV>depents=”compile,test”。在我们的构建中,archive依赖于init和compile,但是我们不需要去写,因为compile已经依赖于init了。即:Ant的依赖关系是传递的,但不是自反的。</DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/ca47e0d3fd364097922f0f809a976277.png"></DIV>
                        <DIV><BR>如果在执行过程中两个目标共享同一个目标,则先导目标只被执行一次。</DIV>
                        <DIV>可以通过指定目标来运行构建:</DIV>
                        <DIV>例如执行完ant后,可以执行ant clean来清理构建:</DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/19f835f2ad08455fa56fb807fa63c69e.png"></DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>ant等价于ant archive</DIV>
                        <DIV>ant init</DIV>
                        <DIV>ant clean</DIV>
                        <DIV>ant compile</DIV>
                        <DIV>ant archive</DIV>
                        <DIV>ant clean archive</DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV><STRONG>当构建完成一次以后,再次执行构建会发生什么呢?</STRONG></DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/904f2e88b87947d09c5195ed45dbb523.png"></DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>第二次执行构建时只花了2s,相比第一次的4s。并且没有任何一个目标表示做了任何工作。</DIV>
                        <DIV>原因如下:所有的任务都检查了它们的依赖关系:</DIV>
                        <DIV>&lt;mkdir&gt;没有创建目录因为已经存在</DIV>
                        <DIV>&lt;javac&gt;比较了源文件和类文件的时间戳</DIV>
                        <DIV>&lt;jar&gt;比较了要被加入文件与已经存在文件的时间</DIV>
                        <DIV>只有更新的时候才进行任务执行。</DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV><STRONG>Ant</STRONG><STRONG>如何处理命令行上的多个目标?</STRONG></DIV>
                        <DIV>执行ant compile archive会怎么样?</DIV>
                        <DIV>先实验一下:</DIV>
                        <DIV><BR><IMG alt="" 
                        src="Ant入门教程_files/b563e0adc32748f1a08f9ba0f2fb4667.png"></DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV>Ant依次执行每个目标和其依赖目标,即Ant的执行顺序是init compile init 
                        compile 
                        archive,虽然这样看起来增加了额外的工作,但是通过上面的执行过程就会发现,由于其依赖性检查的阻止,第二次的init和compile并未真正的执行,执行时间与直接执行archive的时间是一样的。</DIV>
                        <DIV>&nbsp;</DIV>
                        <DIV><STRONG>运行程序:</STRONG></DIV>
                        <DIV>普通执行该类的方法是:</DIV>
                        <DIV>java ?Ccp build/class com.neusoft.test.AntTest 
                        args1 args2</DIV>
                        <DIV>而我们使用Ant的任务来执行它仅仅需要增加一个任务,好处在于:</DIV>
                        <DIV 
                        style="TEXT-INDENT: 21pt">让用于执行的目标依赖与编译的目标,确保运行最新版本</DIV>
                        <DIV style="TEXT-INDENT: 21pt">易于传递复杂参数</DIV>
                        <DIV style="TEXT-INDENT: 21pt">设置classpath更方便</DIV>
                        <DIV style="TEXT-INDENT: 21pt">在Ant自身的JVM中运行,载入更快</DIV>
                        <DIV style="TEXT-INDENT: 21pt"></DIV>
                        <DIV>增加一个新的目标:</DIV>
                        <DIV>&lt;target name="execute" 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -