标签:
Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。
Ant是纯Java语言编写的,所以具有很好的跨平台性。
一、下载和安装
1.1 下载
ant的官方下载地址:http://ant.apache.org/bindownload.cgi
进入页面后,在下图的红色方框中可以下载最新版本。笔者下载的版本是 apache-ant-1.9.4。
1.2 配置环境变量
配置环境变量(我的电脑 -> 属性 -> 高级 -> 环境变量)。
设置ant环境变量:
ANT_HOME C:/ apache-ant-1.9.4
path C:/ apache-ant-1.9.4/bin
classpath C:/apache-ant-1.9.4/lib
1.3 验证
点击 开始 -> 运行 -> 输入cmd
执行构建文件
输入如下命令:ant
如果出现如下内容,说明安装成功:
Buildfile: build.xml does not exist!
Build failed
注意:因为ant默认运行build.xml文件,这个文件需要我们创建。
如果不想命名为build.xml,运行时可以使用 ant -buildfile test.xml 命令指明要运行的构建文件。
查看版本信息
输入 ant -version,可以查看版本信息。
![技术分享](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAckAAACPCAYAAACRSSC0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABNYSURBVHhe7ZzNjuRUk4aLe6yCBXs0tzDiGqrRfJu5B3agLljSSKxGQxfSrEZCaBbdsOAa6Bwf22GHIyPOj9POzKp8QnpUGb/n2GX7LedHf3d///334ePHjz2//vrr4ccffzx89dVXAAAAN8/dhw8fDr///vvh22+/nYI///zz4dOnTwAAADfN3R9//NEL5BdffNGL457mbQD2A8Ouxbzr0wPDrs3ufvnll+nt8Rzm3RiwHxh2TeZdoxYMuya7+/777w9ffvnl6J7HvBsD9gPDrsW869OCYddkd+kt8qeffhrd85h3Y8B+YNi1mHd9emDYtVgvkpe4KO1NAfuCYddk3jVqwbBrMETyhsCwazHv+vTAsEvbxUQymb0hYF8w7FrMuz49MOzSdlGRTGZvCtgPDLsm865RDwy7pFWL5Df/+s+TyJm9KWBfMOxazLs+PTDsUtYkkv/zv/9X5N/+/T+OfpZE8nD46/D0+d3h7uHt4cM//xz+ifj4dHi4uz+8/eDkQj4enh662feF2f+8P7z5rKt7fO/krpj+nHT77nk8vDf5928+M8fUnY/uXD+8/Tg/hP58Onze9S9iz28On3Xznj89j+flec5VMfQ9Pnu5U9lz9saM53b4/SzP8Z9Pn0/xRDqePtbdBx/1jK3p9/RwePvRyTWwpXnzLRh2CWsSyf/6719XURTJv34YHyQFAVwlkhvyfhAOK0RlBqG+f/vByZ1Avx81d/Qf36ua/pwt9/ychFM9iKeHtYrZmnb2FbJ+z83CXWKHPT8/HZ5GMRrOs4hTWiv9EaJz8kfJ6QKWZSORTGxp3nwPDDunNYmk/qu3hZJI/vVD94B481v/YE5/aU8PeAsiqRjefMszh7UXwtkfR3cex4dkL4j970oe2oNYLN4sm9lXJIcH/Swy23COPQfipHJyHxzVbMUGIrmHeet4YNg57QpE8q/DD5/fHTqNHL7iux/eXuSB/vHpYZ51f3+4n0RyEInHx8f+7Snle8FQXz+KMOivHIfPj4fHrneYK6JnhGx8KxvWfXv4oP2OVNfv7b6bdT/OWXz12dF/xTvMnWKynpk3fyW6PK77t0+DPx7LROEPhmFvw1fM+vOQnwV2Eoan9ODsfiaB6B+i4+dPf6qvZ8fP3d6m49Rvm/1XtBJ/6GsmwRlnTsc79i2/XjTinOaNuVnIzV4WYjL0D3VJBI5Fr5/Tv4H6tbLGYn8Sm4TFOQ9mpidyy2M1TF9vm8+COX/pmIZ53fU3XV9Dz3Su1FqL4+h/N75I6vMs84Ze2c/z4ZvuGOV3kO7dee7T4c/xrl5jdi8RGHZOWyWSYtPNoeI2lsiK5G/fdA+EN/0N2DndQ6a7eeXBL288o98LnBFJEZ1ZTIe8FoYjkezqBtHRb2NKJCMB6vczv0nKmpOwakbBHNYxArzIJfQ+lscl/pFImr1YlsKYZujjGYU7nZN+TnpgDg/+9LBfPhSPRXISCy2mC2GdH8qDP4jHLBzzWkPfuJaIrBLG1DOIgSMuSkSX+5xrlr1pH/Ox2lrZ5ySqRqzmWeY8yL7leBd9Ujsf13LNhFl37Jl8c24FOcfDccwCrQV73s+4165vEMLZX8xTe5z/oJjP1xz71N26w+fBhj92H55OkcnB9J4iMOxc1iySyfobUX22Py05kexvtO41UvYw3ITv+4e5FreehXhpYbG5DiUiRyKpZs6+J2RGhDyRXLyh2bfG7iHliORxn44FomgpiKQlHed0bB2DwHdvIY/d8XfrpgejPDwfegEdHoRL8dGfl7ljIbMP6VlseqbYLAhp/eHtLMWXwtHPn/YkpBr9sJ9nTTW9wCgxm/bo1Jo1h/Ox/H0OfzwMvfN+ln2LNafZs6h5a87nVNWO84/PrapR51ULmP7dLOMd7v7GY7LHK+uOQj2vN7xRHtWnr4ROtHlPeTDsHHaSSFrEbDwWyd/8G617s7Ti1uOI5CQmW4tkop/R7UcErSCS/azJ1/vbQSTtHwklrKj252s432lG/+DphWuIeUK4/LzMHT/IlXBkRVIe7k/drPTgHmYOX/8ue0S05vWtMCSGdY++Gn37bPbu1S7F7ni2YM/Dsi8SyahvuacRNSMrkiq+3O+81tFxZETS3UtCiWSSQdn7Bpp4ZO76Dhh2Dtv0TdJ+FkKRHL9qXdxn43/pmh44w9vOUhStv6tIJvTcrEia/lFgPZEUgZrX0oJnRdL6M8P5WeZSLPnLvSWGPdi5uv9YNBL64WkfpMofBXYQiiHez+79ca55gE++iPP4wB/ekHT9zJFg9A9vI8B2n5P42zpba8RucUwaM9/2RSI5Co0+J/OMY5K49fmxz9bWiuRwPmU/5nes9rqs08yzZI1k/bdA9v7dyJbrx2DY3rbp/yYpOfmZLH2ORFK+ahWTC1/f7L2IjbPvHx+P/8MdeehvKZLqLSsxC8tQ0++lqzsWoll4jnpH0UwP6l5kJ39k2lO9SPbYOeN+jvc2xuyxK9Hvj697GKbYLCZaEKw4LP1J3PrjGf7jqKVwjLnE4s3ICIYRp8XcI6Eb9vD4PPyc6hYCOwqDERCvdlpr3F9/LUrdVGvPQyyStt89VxNGoNJ5kPM0Cf1AWqufUSGSU27sHb7SPhbJo/OSarv+vlfWWQj28VeuW79ZTuciA4btaatEspXwTdIxewMk5KEOp5IEV/0hEeD9Dq4aLSYuRsReDINoXeu+z2HeuhYM29OuTiQ9szcF7Mtrs/7f4Z74zxOwy5h3fVowbE9rEslTONXsjQH78jpM/sOwh8MG/zIBu5B516cHhu1h1SJ5abM3BOwPhl2LedenB4ZtbS9GJJPZGwL2BcOuxbzr0wPDtrYXJZLJ7E0B+4Fh12TeNWrBsK3txYlkMntjwL5g2LWYd316YNhW9iJFMpm9KWA/MOyazLtGPTBsC3uxIpnM3hSwDxh2jeZdqxYMO9UQSagCw67NvOvUA8NOsWqRtBceAADAa6dKJL/77rvD119/DQAAcFMURTLl+kLn/24OAADgVYNIAgAABCCSAAAAAYgkAABAQK1Ivnv37gh34AnsNRcAAGAVLW+SWsTWCFpN/Zq5Lew5GwAAXhlrRdLzdczGdc7GLbV1rew1FwAAXinnFEmd93Iar05iNbmafELXAAAALNhaJGuo7cvV2VzJj2IAAAAhlxDJRKnXy0tME9VbP4oBAACEnPvrVk1U58VtrNWPYgAAACFrRTISHIl7OQ9bG/WW6kq+jXl5AACABbUiKaKicQeuQGaV5kreq9efPd/GvRwAAMCCljdJAACAmwKRBAAACEAkAQAAAhBJAACAAEQSAAAgAJEEAAAIQCQBAAACakVS//tCjTu0QNSr53p5IVeTywk1vV5+T7ZcN5qj1/DyQk3NHuh1T1l7ixkQs+e55fcGV0fLm6S9gNde0KW+mrlejY55eSGXS5Tye7HVuqU5NevU1OzFFmtfcv97cg3HdMq5zfXJ3FPmA2zOJUSyRM1cr6amr4ZT5kjvmv5T1m2hZp1z7cVji7Uvuf+9eOnHVNq/5Et1AGdlK5HM5WzMy2mivO71aryYRvfV1EXxKG9rvHwO3WtnlHwd83KaKK97o5oIr17H5LNF1wu5XA4915uRy22Rz2F7vf5c3uYEXVMi11sTE9/Ga/I2J+RqdA7gYqwRSe9CLvmaXC7h5W0s8jWSs6zJ25hXcyq5NXI5Sy6X8PI25tWU0D223+a8GiGK57A95/ZLlPpLfhSrxfZ6s3TMywtezsZqajxqagDOyjnfJGtyCS9vYzU1EaU6Ly8xi645FTtT+7mcJZdLeHkb82pqkD7bq2P6p63LxXPYnrW+RfJeTwu2t9WPYrVIryVXZ3NCqdfGhVI+UVMDcFYQybp8qUeQuppai+3Tfi5nyeUSXt7GvJoapM/26pj+aety8Ry251Q/R0utYHta/ShWS22v1OVq1+ZLfQBXCSJZl7cxr0bHvVwJ26f9XM6SyyW8vI15NTqey9nPXs6rEaJ4Dttzbr9Eqb/k25iXz2HrvX4d8/KCl7OxUo2Xz8UBLkatSMrFa9HDbNzW6LxmTV77Xq/0aGyNsDYv8S3QM6M1bNzW6LxmTV77kvdqbDyKlfLat+ieHLbH9uu8jm+Vz2F7vBkS83JejZfPoXttf01MfEuUl7imNu/lAC5Cy5skAADATYFIAgAABCCSAAAAAYgkAABAACIJAAAQgEgCAAAEIJIAAAABtSKp/32Txh1aIOrVc728UFMTcUqvEPXr2V6+li1mAADABrS8SdoH99oHeamvZm5NjUX3rOkXSr2nzBa2mAEAACdyCZEsUTN3zdpretawxTrn2isAAGTYSiRzORvzcpoor3ujmhylHj3XqyvlhSive2vyXg0AAJyRNSLpPcRLviaXS3h5G/Nqcki9xqsTcjWlfi9vY60+AABcgHO+SdbkEl7exryaEqUeyWtydV4u4eUlZol6rA8AABcAkfRzLbUWL9/aU6oHAIAzgEj6uZZai5e3sVYfAAAuQK1IykPboofZuK3Rec2avPYln0P3Rj02b2t1XrM2L3Evr31bBwAAZ6LlTRIAAOCmQCQBAAACEEkAAIAARBIAACAAkQQAAAhAJAEAAAIQSQAAgABEEgAAIACRBAAACEAkAQAAAhBJAACAAEQSAAAgAJEEAAAIQCQBAAACEEkAAIAARBIAACAAkQQAAAhAJAEAAAIQSQAAgABEEgAAIACRBAAACEAkAQAAAhBJAACAgFqRfPfu3RHuwBPYa+6twXkEANiIljdJ/fBd8yCuqV8zt4U9Z18Le59DAICbYa1Ier6O2bjO2biltq6VveYCAMAr5ZwiqfNeTuPVSawmV5NP6JpTsPO8+RIr5bQf1djcqXmbs3kAgJtka5GsobYvV2dzJT+K1SK9Hjpv62t9G5PP1vdqLV7Oxlp9AICb5BIimSj1enmJaaJ660exrbCzI98ieVujfZsXP8Krs7FWHwDgJjn3162aqM6L21irH8W2ws4u+R41NYlSnZe3sVYfAOAmWSuS0UNU4l7Ow9ZGvaW6km9jXv5UZKY328ZqanK5llov1uoDANwktSIpD1mNO3AFMqs0V/Jevf7s+Tbu5bYgN1uvbWtyudoamxeivNcb+QAAN0nLmyQAAMBNgUgCAAAEIJIAAAABiCQAAEAAIgkAABCASAIAAAQgkgAAAAGtInmpfz8n6+699rmOz64jviWq92JezUvk0sexdm3Z9xb732LGpYj2LvEoX8sWM/biHPuK1pB4lC9R6i/lS5T6bd6rkTovrsn1N9MikrLwphtoYO919bGtXaemz5svvs7pGonrnPZtnY69NC55DGvXtn1r5ySkd23/pSntfYtj22LG1sie9t5baf6a9W1Pq1+i1G/9lphFakp11dSKpF10001UsueadvaatWp6SjVRXuIeUa2NQ4w+n2vOne07dc7a/pfAFsd2befH7ueS+1uztu1p9UuU+iNfYtqXmEdtXRNbiaT25bPO27jNteTtZ5v3ciVsT+RrJBflE16NjlmiGol72Fpd7+U8bL3XL7FSTvtRjc2dmrc5m69lba/tWzNH95zSH/Xm8jYn2LytlbyN25wmyuvemrxXkyPXa3M2X8L25Hz57OUlZvO2xuY0pXwNdkbJbyU3Tz7rmFdn0blcXTNbvknW1ES5kq9jEo8+e36JUn/Jj2KaUj4R1ei4/unVlnIetr7VtzH5bH2v1uLlbKzVr2VtX0J6NV6dh63fur/F1z+jGs8vxQUvb2OtfolSf8kvUdNfqtG+fNZ5r86jlC8R9UtcY2tq8Hp1TP/M1eXiUd0qRCQjobQiadHDbCzyNVGtR65HPluktoTXm7D5yI9imlI+EdV48ai2lPOw9ZFvkbyt0b7Nix/h1dlYq1/L2j7NmhnS4+HVW0q1Np/z9c+oxvNLccHLS8wS9Vi/RKm/5JeQeotXU/IlZvO2zsaFUj5HTe8e8yWu8/qzrdMxHfewtc20iqQ0ehvI1eRynu+R67G5Vmx/qx/FLKWaKO/FW2pL2J6S71FTkyjVeXkba/VrWdunucSMUr3N53z9M6rx/FJc8PKtPaV6S6m/5Jeo6S/VWD+iVFc7x1Lbt8d8yem8V+/FPGrrqtAi6QnlpUTS+qWaXK6GUn/JtzEvL6zJefHaWC3S682wsZqaXK6l1ou1+rWU+iQf1ZzaL9TUaGz9Kb7+GdV4fikueHkba/VLlPpLfoma/lKN9SNKdbVzNLYnmhHFS9i+kt8S86itq2IPkdREee17eR23ORvzanS8BtvT6tu4l9N4Nbo3yuViXk0ruRmS82pyudoamxeivNcb+SWk3pKra8kJrTW5OkupL5eviYmv8eota/MS9/Lat3URut/22ZhXk6OmX2KaKKf7ohqhNp/D60tENTpeg+7VlGpa+qNar6YJK5JWKEUk3WbDZpsCgKuD+/s0OH8vFE8kE2Lpc41IygXAhQDw+uD+Pg3O3wtmK5EEAAB4dUQimUAkAQDgpsmJpIBIAgDATYJIAgAABCCSAAAAAYgkAABAACIJAAAQgEgCAAAEIJIAAAABiCQAAEAAIgkAABCASAIAAAQgkgAAAAGIJAAAQAAiCQAAEIBIAgAAeNwd/h8tqrsYp5jXzgAAAABJRU5ErkJggg==)
但如果出现 ‘ant‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
说明安装失败:(可以重复前述步骤,直至安装成功。)
二、例子
在安装和配置成功后,我们就可以使用ant了。
为了让读者对ant有一个直观的认识,首先以Ant官方手册上的一个简单例子做一个说明。
以下是一个build.xml文件的内容:
![技术分享](http://common.cnblogs.com/images/copycode.gif)
<project name="MyProject" default="dist" basedir=".">
<description>
simple example build file
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from srcinto{build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in buildintotheMyProject−{DSTAMP}.jar file -->
<jar jarfile="dist/lib/MyProject−{DSTAMP}.jar" basedir="${build}"/>
</target>
<target name="clean"
description="clean up" >
<!-- Delete the buildand{dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
![技术分享](http://common.cnblogs.com/images/copycode.gif)
在这个xml文件中,有几个target标签,每个target对应一个执行目标。
我们将这个build.xml放在 D:\Temp\ant_test 路径下,然后在dos界面下进行测试。
ant init
在 D:\Temp\ant_test 路径下创建了一个build目录,执行成功。
ant compile
![技术分享](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoEAAADPCAYAAACKnguNAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABpaSURBVHhe7d1rkixXkYVRDblBSKKbydXMgAC8bdvGHydemVkV349lme7b/URWXenWsSskfvnb3/72919++QUAAABPwiUQAADggbZL4NfX139Jhw/Kzt9ks3gPfk3WVN+n6Fc5AAAfJ/4kUH94HflB1s1n5+49/6xXPO/sM+7+jNP5W37nZ7j763uF6Xt09/cQAIDLZJfArNae9zXzvlqZucvdzz57/qd8vrs+x13nfpqnfJ0AgB/gqkug5lm2WdnNZjwLnvts5NlclWUznq3kG53pZLubbkazKfcs6IzKct2bspV8ozOTabfLPQue+2zk3vdMVbnuZjkAAC+35xK4oturMu93tb5WM1k99ZXPTHXV26Pb92xvXfU63bxnU131VvnumVpfq5msnvohy72XzQAA8HJXXwI31e7Ud57He++t1CrLoqeqea+r3h7dfmQum9GemnKVzUZPVfNeV71V067nXa2v1UxWT/2Q5dFzOgMAwMtd+Y+DVbevva4fNNdX3Zlqp7nP7q2r3h7d/p6zq9nVM7I57+2tq96qadfzrtbXaiarp37I8mkHAIC3yC6B1Q+t6GdZxmer3WlOa32tZrI6EzM+u7f2XpZPuv2ztfeyfE9/b+29LO/4/JlaX6uZrJ76Icu9l80AAPBy2yUwfiipdPiAOGs6v8tXelErna/EnO9V77Pa+1m2otvX7EjuM1Xm/eC71fus9n6WTXQ32+/ylV7UKpt3R/PoAwDwNvEngd/dJ/9w1R/+mWwHr8WvBQDgcX7CJVAvVPwgx1789QMAeKSf8ieBAAAA2IFLIAAAwAP9H5dAAACA5+ESCAAA8ED/yyUQAADgef76z0ug/9uRIV0YVLt6bpaHbqbLwspult/Jn33187PzN9ksPs+Vv2bVOfqMLA8rM3fQ57762QDwWNslcHvjv/ke/c142ls5N5vRXpaHLttM+V30uUc+Qzefnbv3/LNe8byzz7j7M3bnT8/e8is+33TOynNWZu7yzmcDwOP8cfElcLJybjazsrfizDmxe2Tf97Jzoud9zbyvVmbucvezz57/7s93Nr/KynNe9Vky73w2ADzO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)
提示错误,原来是在build.xml的所在目录下找不到src目录。好的,我们直接创建一个src目录,然后再次尝试。
这次,执行成功。
ant dist
在 D:\Temp\ant_test 路径下创建了一个dist目录,执行成功。
ant clean
清除创建的build和dist目录,执行成功。
一个细节
细心的读者,想必已经发现一个问题——在执行 ant compile 和 ant dist 命令的时候把前面的命令也执行了。这是为什么呢?
请留意一下build.xml中的内容。有部分 target 标签中含有 depends 关键字。
这表明,当前的 target 在执行时需要依赖其他的target,必须先执行依赖的target,然后再执行。
三、 关键元素
Ant的构件文件都是XML格式的。每个构件文件包含一个project元素和至少一个target。
target元素可以包含多个task元素。
3.1 Project 元素
project 元素是构建文件的根元素。
一个 project 元素可以有多个 target 元素,一个 target 元素可以有多个 task。
在上节的例子中,project标签里有三个属性。
<project name="MyProject" default="dist" basedir=".">
name属性,指示 project 元素的名字。例子中的名字就是 MyProject。
default属性,指示这个 project 默认执行的 target。在本文的例子中,默认执行的 target 为 dist。
如果我们输入命令 ant 时,不指定 target 参数,默认会执行 dist 这个 target。
basedir属性,指定根路径的位置。该属性没有指定时,使用Ant的构件文件的所在目录作为根目录。
3.2 Target 元素
target 元素是 task 的容器,也就是 Ant 的一个基本执行单元。
以上节例子中的 compile 来举例。
<target name="compile" depends="init" description="compile the source " >
<!-- Compile the java code from srcinto{build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
这个 target 中出现了几个属性。
name属性,指示target元素的名称。
这个属性在一个project元素中必须是唯一的。这很好理解,如果出现重复,Ant就不知道具体该执行哪个 target 了。
depends属性,指示依赖的 target,当前的 target 必须在依赖的 target 之后执行。
description属性,是关于 target 的简短说明。
此外,还有其他几个未出现在构建文件中的属性。
if属性,验证指定的属性是否存在,若不存在,所在target将不会被执行。
unless属性,正好和 if属性相反,验证指定的属性是否存在,若存在,所在target将不会被执行。
extensionOf属性,添加当前 target 到 extension-point 依赖列表。——Ant1.8.0新特性。
extension-point 元素和 target 元素十分类似,都可以指定依赖的target。但是不同的是,extension-point 中不能包含任何 task。
请看以下实例:
<target name="create-directory-layout">
...
</target>
<extension-point name="ready-to-compile" depends="create-directory-layout"/>
<target name="compile" depends="ready-to-compile">
...
</target>
调用target顺序: create-directory-layout --> ‘empty slot‘ --> compile
<target name="generate-sources" extensionOf="ready-to-compile">
...
</target>
调用target顺序: create-directory-layout --> generate-sources --> compile
onMissingExtensionPoint属性:当无法找到一个extension-point时,target尝试去做的动作("fail", "warn", "ignore")。——Ant1.8.2新特性。
3.3 Task 元素
task是一段可以被执行的代码。
一个task可以有多个属性, 一个属性可以包含对一个 property 的引用。
task的通常结构为
<name attribute1="value1" attribute2="value2" ... />
其中,name 是 task 的名字, attributeN 是属性名, valueN 是这个属性的值。
还是以 compile 做为例子:
<target name="compile" depends="init" description="compile the source " >
<!-- Compile the java code from srcinto{build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
在 compile 这个 target 标签中包含了一个任务。
这个任务的动作是:执行JAVA编译,编译src下的代码,并把编译生成的文件放在build目录中。
常用task
javac:用于编译一个或者多个Java源文件,通常需要srcdir和destdir两个属性,用于指定Java源文件的位置和编译后class文件的保存位置。
<javac srcdir="${src}" destdir="${build}" classpath="abc.jar" debug="on" source="1.7" />
java:用于运行某个Java类,通常需要classname属性,用于指定需要运行哪个类。
<java classname="test.Main">
<arg value="-h" />
<classpath>
<pathelement location="dist/test.jar" />
</classpath>
</java>
jar:用于生成JAR包,通常需要指定destfile属性,用于指定所创建JAR包的文件名。除此之外,通常还应指定一个文件集,表明需要将哪些文件打包到JAR包里。
<jar jarfile="dist/lib/MyProject−{DSTAMP}.jar" basedir="${build}"/>
echo:输出某个字符串。
<echo message="Building to ${builddir}"/>
<echo>You are using version ${java.version} of Java! This message spans two lines.</echo>
copy:用于复制文件或路径。
<copy todir="${builddir}/srccopy">
<fileset dir="${srcdir}">
<include name="**/*.java"/>
</fileset>
<filterset>
<filter token="VERSION" value="${app.version}"/>
</filterset>
</copy>
delete:用于删除文件或路径。
<delete file="/lib/ant.jar" />
<delete dir="lib" />
<delete>
<fileset dir="." includes="**/*.bak" />
</delete>
mkdir:用于创建文件夹。
<mkdir dir="${dist}/lib" />
move:用户移动文件和路径。
<move todir="some/new/dir">
<fileset dir="my/src/dir">
<include name="**/*.jar" />
<exclude name="**/ant.jar" />
</fileset>
</move>
3.4 Property 元素
Property 是对参数的定义。
project的属性可以通过property元素来设定,也可在Ant之外设定。若要在外部引入某文件,例如build.properties文件,可以通过如下内容将其引入:<property file=” build.properties”/>。
property元素可用作 task 的属性值。在task中是通过将属性名放在“${”和“}”之间,并放在task属性值的位置来实现的。
例如 complile 例子中,使用了前面定义的 src 作为源目录。
<javac srcdir="${src}" destdir="${build}"/>
Ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致,这些系统属性可参考sun网站的说明。
3.5 extension-point元素
和 target 元素十分类似,都可以指定依赖的target。但是不同的是,extension-point 中不能包含任何 task。——Ant1.8.0新增特性。
在 target元素中的例子里已提到过,不再赘述。
参考资料
ant官方手册:http://ant.apache.org/manual/index.html
http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html
Ant 简易教程
标签:
原文地址:http://www.cnblogs.com/iamcui/p/4441041.html