ant的一些记录

ant是自动化构建工具,大概吧~ 前天下载tomcat源码之后想要导入eclipse中,然后发现官网上有详细的教程,不过说并不保障导入eclipse的正确性...

实际操作的时候学到了很多,记录一下。只记录比较重要的,其他更详细的东西随时查看官方文档好了。

1.ant与maven的差别在于ant作为自动化构建工具,强调“构建”的过程。而maven是作为项目管理工具存在,注重于使项目结构更加合理易于维护和理解。这里有篇文章是这么说的~

2.从使用上来说ant的关注点在一个xml文件,默认为build.xml,当然可以自己随便起个名字。 运行的时候加一个 -f 名字   即可

3.xml文件的根节点是 <project>元素,有个属性是basedir,基准目录,ant里的路径变量类似于系统环境变量那种定义方式,是拼接起来的。

大概样子就像这样:不写或者写".",都是说以当前这个build.xml文件的当前目录路径为根目录。

然后拼接方式就像这样:下面还有好多引用tomcat.output的...找起来好麻烦。

4.property,是存储值用的,而且这些值大小写敏感,不可更改,然后就是先到先得....也就是说如果前面定义了后面再定义也是是无效的。

tomcat的build.xml里是这么定义的,所以文档上说在defualt里定义了很多通用的,如果想修改的话可以新建一个build.properties,在里面放上你想修改的,但是要注意的是,如果引入的这些文件里有什么相互用了对方的值的话~测试之后发现,同文件内属性定义其实先后顺序都无所谓,但是如果是a文件的数据引用了b文件的数据,则a必须必b先引入,如果build里定义的和properties里的相互引用的话,则被引用的要放在前面。其实这些读一下ant的源码应该就清楚了,不过还是等以后有时间吧。先mark一下~ 这篇博客讲的挺详细.

5.ant执行的命令是ant,而执行的对象是target,可以在命令行执行ant -targethelp 来查看有多少可以执行的target。

name:target的name属性是用来区分的,可以设置默认执行的target,也就是说在命令行输入ant不指定target的时候默认执行这个,在project元素上有个属性:default,它的值就是默认执行的target的name属性的值。

depends:依赖,指明这个target是依赖哪一个target的,在执行这个target时会自动执行去执行前面的target

description:可以在这个属性里添加一些描述信息

6.task,target内会有很多task,实际执行的就是他们,比如copy、mkdir、delete、javac、jar、war等,看名字也能猜出什么意思,他们具体的属性和用法可查文档,我们也能通过java代码扩展自己的task。

7.macrodef:宏定义,类似于angularjs里的自定义指令(restrict:E的指令) ,macrodef的定义和target是同级的,它的name属性值可以在作为标签元素使用

      子元素attribute的属性name,这个name值会作为macrodef所定义宏的属性来接受值,可以设置多个attribute元素

      子元素sequential,它用来定义按顺序执行的操作,其中的task会按顺序执行。而在其中可以引用值,如果是用@{var}来引用,则引用的就是attribute属性定义的属性,如果是${var}则用来引用在外面定义,或者引入的其他文件的属性。

原文地址:https://www.cnblogs.com/zaixiuxing/p/5299028.html