XDoclet 说明

XDoclet 说明


XDoclet是一个扩展的Javadoc Doclet引擎。它是一种通用的java工具,可以让你创建自己的javadoc @tags进而利用XDoclet中的Templet enging基于这些@tags生成源代码或其他文件(例如xml的deployment descriptors)。XDoclet已经支持一些常见的任务了,例如生成web.xml和ejb-jar.xml等,用户可以创建其他templets和@tags,以增加对其他技术的支持

更宏伟的目标,是让你可以在基于组件的开发工程中可以实现“持续集成”(Continuous Integration)。要点是在你编写每一个组件代码的同时,指定它们的“原数据”(meta-data),也就是设定每个组件的配布属性(deployment meta-data)。你不必担心这些配布属性会过时,因为你可以接触代码,这些配布属性和代码同时被修改。这样就做到了持续集成,整个过程很自然的就是round-trip了。我们称之为“持续再配置”(Continuous Reconfiguation)。 XDoclet很适合成为Apache-Ant这样的build过程的一部分。

整个系统是可以扩展的。如果需要,你可以为你的特定任务写特别的templet(如支持新的App Server,为Toplink等定义OR Mapping schema, 甚至将servlet当作组件来使用)。XDoclet已经支持一些预先写好的Templet和@tags,例如为EJB关联的东西提供的,为自动生成web.xml提供的等等。

XDoclet基于以下几个部分:

  • Apache Ant Task: 和就是这种任务的例子。在你的build.xml文件中,在编译代码的taget之前定义。
  • task的嵌套元素: 这是定义对于源代码需要执行的子任务的地方。例如 和。每一个子任务都可以单独配置。
  • Template文件: 子任务可以基于template文件生成输出。template可以是包含类似于 <?XML:NAMESPACE PREFIX = XDOCLET />的xml元素的文本文件。Template文件类似于JSP文件,类似于JSP tags, 实际的实现位于子任务类中,一个基类定义了一些共通的tag
  • 特别的JavaDoc @tags: 通过使用特别的JavaDoc @tags, 给每个组件定义设定。例如在SimpleServlet.java中定义一个 @web:servlet name="The Simple Servlet",让 子任务知道SimpleServlet.java包含一个servlet的定义,这样就可以利用@web:servlet tag中的信息生成相应的web.xml描述。
  • The mege system: 为了避免过多的tags, XDoclet同时也可以使用一种merge system。例如,为了避免在EJBean源代码中写@jboss:table-name account,可以定义一个 jaws-db-setting-Accoutn.xml文件,这个文件包含实际的XML代码,可以被子任务合并到最终生成的jaws.xml文件中

实际的例子,可以参见sample code和sample build.xml文件

XDoclet是EJBDoclet的后继者,而EJBDoclet是由Rickard Oberg -- 世界上最好的程序员之一,开放源代码的先锋 -- 发起的项目,在这个项目的开发过程中,逐渐发现不仅仅可以用于EJB,于是开始了一个新的项目,一开始就以一个更宽广的应用作为目标。

You can download it from http://sourceforge.net/projects/xdoclet.

xdoclet

05-04

用ant执行build.xml的时候,出现了下面的问题!如何解决啊?rnBUILD FAILEDrnF:\javatest\test_01\build.xml:24: org.picocontainer.PicoIntrospectionException: Unknown property 'mergecfgxml' in class org.xdoclet.plugin.hibernate.HibernateConfigPlugin Existing properties:defaultentitymode=java.beans.PropertyDescriptor@17f8350d, contextObjects=java.beans.PropertyDescriptor@f07cd3b1, jndiurl=java.beans.PropertyDescriptor@915725bc, jdbcbatchsize=java.beans.PropertyDescriptor@d9b6878e, properties=java.beans.PropertyDescriptor@555305e0, jdbcautocommit=java.beans.PropertyDescriptor@e1fbc5ff, encoding=java.beans.PropertyDescriptor@1e0879e5, validate=java.beans.PropertyDescriptor@3625d489, packagereplace=java.beans.PropertyDescriptor@230522dd, jdbcusername=java.beans.PropertyDescriptor@5597762f, jdbcusescrollableresultset=java.beans.PropertyDescriptor@9cd82f08, jdbcfetchsize=java.beans.PropertyDescriptor@1c71410e, class=java.beans.PropertyDescriptor@68547e1c, cachequerycachefactory=java.beans.PropertyDescriptor@68fb23e4, restrictedpath=java.beans.PropertyDescriptor@e44790af, transactionmanagerlookup=java.beans.PropertyDescriptor@dbde75e7, c3p0maxsize=java.beans.PropertyDescriptor@80c89dd3, version=java.beans.PropertyDescriptor@cfb0f70d, mappedClasses=java.beans.PropertyDescriptor@9278ee75, destdirFile=java.beans.PropertyDescriptor@8b28536, destdir=java.beans.PropertyDescriptor@99a1dcba, jdbcusestreamsforbinary=java.beans.PropertyDescriptor@4e75bbc9, filereplace=java.beans.PropertyDescriptor@628cd347, jdbcurl=java.beans.PropertyDescriptor@d4ba4522, transactionfactory=java.beans.PropertyDescriptor@22f3aa9a, jdbcisconnectionvalidationrequired=java.beans.PropertyDescriptor@603bf721, showsql=java.beans.PropertyDescriptor@8ba28daf, dialect=java.beans.PropertyDescriptor@90deaf5c, jdbcpoolsize=java.beans.PropertyDescriptor@cdb421a6, querysubstitutions=java.beans.PropertyDescriptor@9749d664, c3p0idletestperiod=java.beans.PropertyDescriptor@2f97257d, hbm2ddlauto=java.beans.PropertyDescriptor@c20dd58a, jdbcbatchversioneddata=java.beans.PropertyDescriptor@691370f8, jdbcdriver=java.beans.PropertyDescriptor@4c710149, defaultschema=java.beans.PropertyDescriptor@942f8578, jtausertransaction=java.beans.PropertyDescriptor@6b3bf4ea, c3p0timeout=java.beans.PropertyDescriptor@3268956f, usereflectionoptimizer=java.beans.PropertyDescriptor@9bf430e9, DTDVersion=java.beans.PropertyDescriptor@e60d14b5, c3p0acquireincrement=java.beans.PropertyDescriptor@14431de7, propertyMap=java.beans.PropertyDescriptor@ac138cd9, jndiclass=java.beans.PropertyDescriptor@6777e6d5, connectionprovider=java.beans.PropertyDescriptor@3afc2c35, jdbcisolation=java.beans.PropertyDescriptor@f9330e99, outputValidator=java.beans.PropertyDescriptor@18d4871b, c3p0maxstatements=java.beans.PropertyDescriptor@5aaca4c6, c3p0minsize=java.beans.PropertyDescriptor@e34ae409, cacheregionprefix=java.beans.PropertyDescriptor@c6444cb6, useouterjoin=java.beans.PropertyDescriptor@75763354, fileregex=java.beans.PropertyDescriptor@71fbc11a, cacheusequerycache=java.beans.PropertyDescriptor@3cd8ae65, jdbcusegetgeneratedkeys=java.beans.PropertyDescriptor@edf3c0d7, jdbcautoreconnectforpools=java.beans.PropertyDescriptor@5b533821, cacheuseminimalputs=java.beans.PropertyDescriptor@b278b36e, jdbcpassword=java.beans.PropertyDescriptor@36e042c, jndisessionfactoryname=java.beans.PropertyDescriptor@e73dff16, cacheprovider=java.beans.PropertyDescriptor@1c051d9, maxfetchdepth=java.beans.PropertyDescriptor@30fcff6b, packageregex=java.beans.PropertyDescriptor@c820230, mappingextension=java.beans.PropertyDescriptor@e57bd902, multioutput=java.beans.PropertyDescriptor@5b1e348d, jdbcautoreconnect=java.beans.PropertyDescriptor@a8b6362b, jndidatasource=java.beans.PropertyDescriptor@acbc3ce4

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭