dreamliker

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

 

        XDoclet 是一个面向属性的java代码生成器,它使java也具有.net的属性能力。要实现XDoclet的功能,就要借助Ant,因为XDoclet实质是Ant的一项任务。

 1. 继承DocletTask类,定义自己的Ant的任务。

  代码如下:        

 package demo;
  
import org.apache.log4j.Logger;
  
import xdoclet.DocletTask;
  
public class DemoDoclet extends DocletTask {
    
/**
     * Logger for this class
     
*/

    
private static final Logger logger = Logger.getLogger(DemoDoclet.class);

     
public DemoDoclet()
     
{
        logger.info(
"DemoDoclet start.!");
        
//this.addSubTask(new DemoDocletSubTask()); 实现DocletTask的子任务,其实不需要在这里实例子任务,只要在xdoclet.xml声明就可以。
        
     }

     }
 

     如果要实现DocletTask的子任务。代码如下:

  

      package demo;
  
import org.apache.log4j.Logger;
  
import xdoclet.XDocletException;
  
import xdoclet.SubTask;

   
public class DemoDocletSubTask extends SubTask {
 
/**
  * Logger for this class
  
*/

 
private static final Logger logger = Logger
   .getLogger(DemoDocletSubTask.
class);

 
public DemoDocletSubTask() {
  
super();
  
// TODO Auto-generated constructor stub
 }


 
public void execute() throws XDocletException {
  
// TODO Auto-generated method stub
          logger.info("DemoDocletSubTask start xml.!");
          
 }


     }

   如果要实现DocletTask的子任务,还要在META-INF目录下,创建xdoclet.xml文件,声明DocletTask的子任务。
   目录如下:
  classes
    |
    +-demo
    |     |
    |    +- DemoDoclet.class
    |     |
    |    +- DemoDocletSubTask.class
    |
    +-META-INF
          |
         +- xdoclet.xml

  代码如下:
  
 <?xml version="1.0" encoding="UTF-8"?>
    
<xdoclet-module>
    
<subtask
        
name="demodoclettask"
        implementation-class
="demo.DemoDocletSubTask"
        parent-task-class
="demo.DemoDoclet"
      
/>

    
</xdoclet-module>
  2.Ant的任务实现。
  代码如下:
 
 <?xml version="1.0" encoding="UTF-8"?>
<project name="XDoclet Generator" default="_xdoclet_generation_">
    
<property file="xdoclet-build.properties" />
    
<property name="eclipse.home" value="D:/eclipse3.1/eclipse" />
    
<property name="xdoclet.basedir" value="${eclipse.home}/plugins/org.jboss.ide.eclipse.xdoclet.core_1.5.0.M2" />
    
<property name="jboss.net.version" value="4.0" />
    
<property name="xdoclet.lib.dir" value="d:/xdoclet-bin-1.2.3/lib" />
    
<property name="build.dir" value="." />
    
<property name="build.classes.dir" value="${build.dir}/classes" />
    
<property name="build.src.dir" value="${build.dir}/src" />

    
<path id="project.classpath">
        
<pathelement location="classes" />
        
<pathelement location="D:/xdoclet-bin-1.2.3/lib/xdoclet-1.2.3.jar" />
        
<pathelement location="D:/xdoclet-bin-1.2.3/lib/xjavadoc-1.1.jar" />
        
<pathelement location="D:/ant-1.6.5/apache-ant-1.6.5/lib/ant.jar" />
        
<pathelement location="D:/xdoclet-bin-1.2.3/lib/log4j.jar" />

        



    
</path>
    
<path id="xdoclet.classpath">
        
<path refid="project.classpath" />
        
<fileset dir="${xdoclet.lib.dir}">
            
<include name="*.jar" />
            
<exclude name="xdoclet-module-jboss-net-*.jar" />
        
</fileset>
        
<fileset dir="${xdoclet.basedir}">
            
<include name="xdoclet-module-jboss-net-${jboss.net.version}*.jar" />
        
</fileset>
    
</path>

    


    
<!-- ================================= 
          target: demodoclet              
         ================================= 
-->
    
<target name="demodoclet" description="--> description">
        
<taskdef name="demodoclet" classname="demo.DemoDoclet" classpathref="xdoclet.classpath" />
        
<demodoclet destdir="${build.src.dir}" excludedtags="@version,@author,@todo,@see" addedtags="@xdoclet-generated at TODAY,@copyright The XDoclet Team,@author XDoclet,@version version" force="false" verbose="false">

            
<fileset dir="${build.src.dir}">
                
<include name="*.java" />
            
</fileset>
            
<demodoclettask />



        
</demodoclet>
    
</target>


    
<target name="_xdoclet_generation_" depends="demodoclet" />
</project>


  运行结果如下:

     Buildfile: xdoclet-build.xml

demodoclet:
[demodoclet] (demo.DemoDoclet                     15  ) DemoDoclet start....!
[demodoclet] (XDocletMain.start                   47  ) Running <demodoclettask/>
[demodoclet] (demo.DemoDocletSubTask              22  ) DemoDocletSubTask start xml....!
[demodoclet] (XDocletMain.start                   47  ) Running <demodoclettask/>
[demodoclet] (demo.DemoDocletSubTask              22  ) DemoDocletSubTask start xml....!

_xdoclet_generation_:

BUILD SUCCESSFUL
Total time: 3 seconds

     
  

posted on 2005-09-27 20:06  Tony  阅读(608)  评论(1)    收藏  举报