XDoclet任务开发

 

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

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

  代码如下:        

None.gif   package  demo;
None.gif  
import  org.apache.log4j.Logger;
None.gif  
import  xdoclet.DocletTask;
ExpandedBlockStart.gifContractedBlock.gif  
public   class  DemoDoclet  extends  DocletTask  dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/** *//**
InBlock.gif     * Logger for this class
ExpandedSubBlockEnd.gif     
*/

InBlock.gif    
private static final Logger logger = Logger.getLogger(DemoDoclet.class);
InBlock.gif
InBlock.gif     
public DemoDoclet()
ExpandedSubBlockStart.gifContractedSubBlock.gif     
dot.gif{
InBlock.gif        logger.info(
"DemoDoclet startdot.gif.!");
InBlock.gif        
//this.addSubTask(new DemoDocletSubTask()); 实现DocletTask的子任务,其实不需要在这里实例子任务,只要在xdoclet.xml声明就可以。
InBlock.gif
        
ExpandedSubBlockEnd.gif     }

ExpandedBlockEnd.gif     }
 

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

  

None.gif        package  demo;
None.gif  
import  org.apache.log4j.Logger;
None.gif  
import  xdoclet.XDocletException;
None.gif  
import  xdoclet.SubTask;
None.gif
ExpandedBlockStart.gifContractedBlock.gif   
public   class  DemoDocletSubTask  extends  SubTask  dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif 
/** *//**
InBlock.gif  * Logger for this class
ExpandedSubBlockEnd.gif  
*/

InBlock.gif 
private static final Logger logger = Logger
InBlock.gif   .getLogger(DemoDocletSubTask.
class);
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif 
public DemoDocletSubTask() dot.gif{
InBlock.gif  
super();
InBlock.gif  
// TODO Auto-generated constructor stub
ExpandedSubBlockEnd.gif
 }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif 
public void execute() throws XDocletException dot.gif{
InBlock.gif  
// TODO Auto-generated method stub
InBlock.gif
          logger.info("DemoDocletSubTask start xmldot.gif.!");
InBlock.gif          
ExpandedSubBlockEnd.gif }

InBlock.gif
ExpandedBlockEnd.gif     }

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

  代码如下:
  
None.gif   <? xml version="1.0" encoding="UTF-8" ?>
None.gif    
< xdoclet-module >
None.gif    
< subtask
None.gif        
name ="demodoclettask"
None.gif        implementation-class
="demo.DemoDocletSubTask"
None.gif        parent-task-class
="demo.DemoDoclet"
None.gif      
/>
None.gif
None.gif    
</ xdoclet-module >
  2.Ant的任务实现。
  代码如下:
 
None.gif   <? xml version="1.0" encoding="UTF-8" ?>
None.gif
< project  name ="XDoclet Generator"  default ="_xdoclet_generation_" >
None.gif    
< property  file ="xdoclet-build.properties"   />
None.gif    
< property  name ="eclipse.home"  value ="D:/eclipse3.1/eclipse"   />
None.gif    
< property  name ="xdoclet.basedir"  value ="${eclipse.home}/plugins/org.jboss.ide.eclipse.xdoclet.core_1.5.0.M2"   />
None.gif    
< property  name ="jboss.net.version"  value ="4.0"   />
None.gif    
< property  name ="xdoclet.lib.dir"  value ="d:/xdoclet-bin-1.2.3/lib"   />
None.gif    
< property  name ="build.dir"  value ="."   />
None.gif    
< property  name ="build.classes.dir"  value ="${build.dir}/classes"   />
None.gif    
< property  name ="build.src.dir"  value ="${build.dir}/src"   />
None.gif
None.gif    
< path  id ="project.classpath" >
None.gif        
< pathelement  location ="classes"   />
None.gif        
< pathelement  location ="D:/xdoclet-bin-1.2.3/lib/xdoclet-1.2.3.jar"   />
None.gif        
< pathelement  location ="D:/xdoclet-bin-1.2.3/lib/xjavadoc-1.1.jar"   />
None.gif        
< pathelement  location ="D:/ant-1.6.5/apache-ant-1.6.5/lib/ant.jar"   />
None.gif        
< pathelement  location ="D:/xdoclet-bin-1.2.3/lib/log4j.jar"   />
None.gif
None.gif        
None.gif
None.gif
None.gif
None.gif    
</ path >
None.gif    
< path  id ="xdoclet.classpath" >
None.gif        
< path  refid ="project.classpath"   />
None.gif        
< fileset  dir ="${xdoclet.lib.dir}" >
None.gif            
< include  name ="*.jar"   />
None.gif            
< exclude  name ="xdoclet-module-jboss-net-*.jar"   />
None.gif        
</ fileset >
None.gif        
< fileset  dir ="${xdoclet.basedir}" >
None.gif            
< include  name ="xdoclet-module-jboss-net-${jboss.net.version}*.jar"   />
None.gif        
</ fileset >
None.gif    
</ path >
None.gif
None.gif    
None.gif
None.gif
None.gif    
<!--  ================================= 
None.gif          target: demodoclet              
None.gif         ================================= 
-->
None.gif    
< target  name ="demodoclet"  description ="--> description" >
None.gif        
< taskdef  name ="demodoclet"  classname ="demo.DemoDoclet"  classpathref ="xdoclet.classpath"   />
None.gif        
< 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" >
None.gif
None.gif            
< fileset  dir ="${build.src.dir}" >
None.gif                
< include  name ="*.java"   />
None.gif            
</ fileset >
None.gif            
< demodoclettask  />
None.gif
None.gif
None.gif
None.gif        
</ demodoclet >
None.gif    
</ target >
None.gif
None.gif
None.gif    
< target  name ="_xdoclet_generation_"  depends ="demodoclet"   />
None.gif
</ project >
None.gif
None.gif


  运行结果如下:

     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

     
  

转载于:https://www.cnblogs.com/dreamliker/archive/2005/09/27/245384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值