您的位置:首页 > 其它

很土的名字:ant学习笔记.

2009-04-20 15:35 363 查看
前天公司给任务,用ant写个build.xml把项目编译出来,以前倒是用过那么一次,当时也就做了一例子,现在也忘的差不多了,这俩天算是检回来,下面是我做出来后的一些心得一笔记,供自己复习,如果有些地方能帮到人的那最好.

ant实际上是把java在命令行下的java,javac,javadoc 这些命令集成到它(缺省为build.xml)下面了,当然不止这些命令,只是举个例子.

当编译build.xml时,ant就在dos命令下把程序员在build.xml里面执行的任务解析出来.

所以可以把ant看成是jdk和dos的一个中间件,在没有ant和make等之前,直接在dos编译,在有ant后,以jdk为基础,通过build.xml向dos发送命令完成任务(target),这是整体的理解.

我项目里大概分为以下几个步骤:

1.clear:清空编译后的项目和war包.

2.init:建编译时需要的目录.

3.copy:把jsp,javascript等文件直接copy到编译后的项目里(该项目和webapps/下面的结构一样).

4.compile:执行编译.

5.war:打war包.

当然还有一些其他的功能,比如上传file,打jar包的等.

在这几个步骤中遇到一些问题,需要注意的列出来:

1.project下的basedir属性:通常定位为. 表示前目录,也就是build.xml所在的目录.也可以定义其他目录为根目录.

2.compile时,如果出现编码问题,则设置 <compilerarg line="-encoding UTF-8 "/>

3.如果报错为编码问题UTF-8 则把文件里的内容copy出来再重新建一个, 再重新copy进去就OK!

4.classpath类路径指的jar包的路径.在<target classpathref = "id">

<path id = "id">

......设置classpath路径

<fileset dir = "${classpath}/lib"/>

</path>

5.tomcat下的servlet-api.jar包和jsp-api.jar包需要从tomcat里导,或者拷贝到项目里面 把tomcat/common/lib下的2个jar删掉,不然出现冲突,导致加载不了.

6.注意:类不安全问题通过下面这个命令查看,一般是没有定义范型.
<compilerarg value="-Xlint:unchecked"/>

7.打war包时,出现The name is undefined 则检查<war>是否包住了<lib>和<classes></war>

我就是写错了<war/><classes/><lib/>导致花了一晚上没找到.

8.从命令行传递参数:ant buildfile test.xml -Dversion=1.1 war

上面的意思是编译test.xml的文件,version的值为1.1 编译到target为war的任务为止.

接参数时用<property name = "version" value = "xxx"/>

如果没传参默认为xxx 传了以后${version}值就为1.1

9.判断用<condition name = "test">这里面有<equals>判断字符串,其他的可以判断图片等...</condition>

此时test有值.为true或者false

<target if = "test" >

则为true时编译这个任务.

或者 unless = "test"

则为false时编译这个任务.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: