Doclet演练ant taskdef用法

来源:互联网 发布:浙江省软件企业协会 编辑:程序博客网 时间:2024/05/16 01:28

http://hi.baidu.com/giter/blog/item/d9fcd6431446f41673f05d1f.html

 

2.3 使用Ant执行任务
XDoclet“嫁”给了Ant。XDoclet任务就是Ant的自定义任务,除此以外,没有其他运行XDoclet任务的方法。所幸的是,Ant已经成为了Java构建工具事实上的标准,所以这不算什么限制。事实上,反过来,XDoclet与Ant的这种“亲密”关系使得XDoclet可以参与到任何Ant构建过程当中去。
2.3.1 声明任务
XDoclet并没有和Ant一起发布,所以如果你想要使用XDoclet的话,就需要单独的下载和安装。在使用任何一个XDoclet的任务之前,你首先需要在使用Ant的<taskdef>任务来声明它。例如:
<taskdef name=”ejbdoclet”
  classname=”xdoclet.modules.ejb.EjbDocletTask”
  classpathref=”xdoclet.lib.path”/>
如果你熟悉Ant的话,你就会知道这段代码是告诉Ant加载<ejbdoclet>的任务定义。当然,你也可以以你喜欢的任何方式来命名这个自定义任务,但最好还是遵守标准的命名规律以免发生混淆。classname和classpathref属性告诉Ant到哪里去找实现这个自定义任务的XDoclet类。如果你想使用其他的XDoclet任务,就必须要类似这样首先声明这个任务。
一般共通的做法是,把所有需要使用的XDoclet任务都放在Ant的一个目标里声明,这样在其他的目标里如果需要使用这些任务,只要depends这个任务就可以了。你可能已经在Ant的构建文件里包含了init目标,这就是放置XDoclet任务声明的好地方(当然如果你没有,你也可以建一个)。下面的例子就是在一个init目标里加入了<ejbdoclet>和<webdoclet>的声明:
<target name=”init”>
  <taskdef name=”documentdoclet”
    classname=”xdoclet.modules.doc.DocumentDocletTask”
    classpathref=”xdoclet.lib.path” />
    <taskdef name=”ejbdoclet”
      classname=”xdoclet.modules.ejb.EjbDocletTask”
      classpathref=”xdoclet.lib.path” />
    <taskdef name=”webdoclet”
      classname=”xdoclet.modules.web.WebDocletTask”
      classpathref=”xdoclet.lib.path” />
</target>
现在,任务声明好了,XDoclet“整装待发”。

2.3.2 使用任务
你可以在任何目标里使用声明好的任务。在任务的上下文环境里,可以调动相关的子任务。让我们看一个例子,这个例子调用了<ejbdoclet>任务。不要担心看不懂语法的细节,现在你只需要关心一些基础概念就可以了。
<target name=”generateEjb” depends=”init”>
  <ejbdoclet destdir=”${gen.src.dir}”>
    <fileset dir=”${src.dir}”>
      <include name=”**/*Bean.java”/>
    </fileset>
  <deploymentdescriptor destdir=”${ejb.deployment.dir}”/>
  <homeinterface/>
  <remoteinterface/>
  <localinterface/>
   <localhomeinterface/>
  </ejbdoclet>
</target>