在ant的高级应用中可以利用ant提供的api进行自定义的任务(task)设计,简单的来说就是继承org.apache.tools.ant.Task类,并实现excute方法,如果是简单的任务,那写不了几行java代码,如果任务复杂,免不了要对自定义任务的代码进行调试,但是使用ant时运行的是build.xml怎么调试对应的java代码?
解决的思路就是直接在eclipse中调试ant。
ant本身是一个java程序,所以可以在eclipse中启动调试,我们用的命令 ant -f xxx.xml target 实际是调用了一个脚本,并把build文件和target作为参数传给ant的主函数。因此完全可以在eclipse中完成这些动作,并启动调试或者单纯运行。
在一个拥有build.xml文件的java工程中,
添加所有ANT_HOME/lib目录下的库到工程的build path下;
debug-》debug configurations,工程选择当前工程,主函数填org.apache.tools.ant.Main,也就是ant的主函数;
选择argument选项卡,在program argument中填写你本来想运行的ant参数比如:-f "D:/xxx/build.xml" tests;
在源文件中打上断点,启动调试。
有可能会遇到错误:
1.Invalid implementation version between Ant core and Ant optional tasks
这是因为你的项目环境中存在多个ant库,版本冲突,很多库都会把ant包含其中,比如weblogic,hibernate等等,解决办法就是删掉他们 ,只留一个。如果工程里的库太多以ant为目标搜索一下。
2.Cannot use SUN rmic, as it is not available. A common solution is to set the environment variable JAVA_HOME or CLASSPATH.".
这是因为ant中有<rmic>任务时,他会调用JAVA_HOME/lib下的jar,而一般eclipse只会包含jre下的库,解决办法把所有JAVA_HOME/lib下的jar导入工程(其实只要一个tool.jar)。