- 浏览: 1541197 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (225)
- JAVA (27)
- Spring (49)
- Linux (51)
- JavaScript (8)
- Scrum (23)
- IDE (2)
- JSON (2)
- Solr (0)
- Webharvest (0)
- Hibernate (8)
- 杂谈 (3)
- Windows 7 (4)
- 持续集成 (23)
- tomcat (3)
- Android (1)
- SpringSecurity (11)
- Maven (9)
- jotm (3)
- C3P0 (1)
- Active Directory (2)
- cas (1)
- JQuery (2)
- ajax (1)
- plsql (2)
- nginx (4)
- apache (1)
- thrift (7)
- python (3)
- oracle (4)
- php (2)
- redis (1)
- fedora (1)
- windows7 (0)
- SVN (1)
- NFS (1)
- SAMBA (1)
- Atomikos (1)
- apache-poi (1)
- mysql (2)
- vncserver (1)
- mac (2)
- firefox (1)
- JIRA (1)
- p6spy (1)
- git (1)
- github (1)
- gitlab (1)
- gogs (1)
- Druid (1)
- MyBatis (1)
- docker (8)
- zabbix (1)
最新评论
-
lialatd:
您好,我用您的方法通过java api往jira系统中添加is ...
JIRA REST API ---- JAVA -
sprcen945:
可以了,是因为没加intercept-url 的拦截, 尼玛, ...
SpringSecurity3.X--Cas client 配置 -
sprcen945:
请问为什么我配了security.xml后切入点不起作用(之前 ...
SpringSecurity3.X--Cas client 配置 -
linxingyul:
根据楼主的代码 继承了WebMvcConfigurationS ...
SpringMVC4零配置--Web上下文配置【MvcConfig】 -
java_老头:
MvcConfig.java的FilterType.ANNOT ...
SpringMVC4零配置--Web上下文配置【MvcConfig】
最近在看《Java Power Tools》,对UmlGraph很感兴趣,于是小研究了下。
UmlGraph可以将由源代码生成的UML图表(这里就是类图)嵌入在javadoc中,这样的好处就是不需要人工维护,每次都是从源代码自动生成。
以下就是一个使用UmlGraph在javadoc生成UML图表的效果图:
在图表上点击相应的类图,则会跳转到对应类的页面,真的很好很强大。
那么,该如何使用UmlGraph呢?
一。下载与安装
UmlGraph官方网站:http://www.umlgraph.org/
现在下载的最新版本为:5.4
下载后解压到任意目录即可,比如:E:/UMLGraph-5.4。
另外,要想使用UmlGraph,还需要安装Graphviz。
Graphviz官网地址:http://www.graphviz.org/
在windows下安装Graphviz比较简单,下载到graphviz-2.26.3.msi(目前的最新版本),双击,一步步安装就行。
在linux下安装Graphviz稍显复杂,具体的安装步骤请参看:linux下graphviz的安装 。
二。ant配置
的在ant中使用UmlGraph很方便,只需要在<javadoc>任务中嵌入<doclet>标签,并使用<param>标签指定参数,以下是一个示例:
<!-- 生成javadoc --> <target name="javadoc" depends="compile" description="javadoc run"> <echo message="javadoc run" /> <delete dir="${reports.javadoc.dir}" /> <mkdir dir="${reports.javadoc.dir}" /> <javadoc sourcepath="${src.dir}" destdir="${reports.javadoc.dir}" encoding="UTF-8" charset="UTF-8" docencoding="UTF-8" author="true" version="true" use="true" access="private" linksource="true" windowtitle="${ant.project.name} API"> <classpath> <path refid="compile.classpath" /> <pathelement path="${compile.classes.dir}" /> </classpath> <doctitle> <![CDATA[<H1>${ant.project.name}</H1>]]></doctitle> <bottom> <![CDATA[<i>Copyright © 2010 All Rights Reseverd.</i>]]></bottom> <doclet name="org.umlgraph.doclet.UmlGraphDoc" path="E:/UMLGraph-5.4/UmlGraph.jar"> <param name="-inferrel" /> <param name="-inferdep" /> <!-- 不显示详细日志信息,出问题时可以注释掉 --> <param name="-quiet" /> <param name="-hide" value="java.*" /> <param name="-collpackages" value="java.util.*" /> <param name="-postfixpackage" /> <param name="-nodefontsize" value="9" /> <param name="-nodefontpackagesize" value="7" /> <param name="-qualify" /> <param name="-attributes" /> <param name="-operations" /> <param name="-enumerations" /> <param name="-enumconstants" /> <!-- 检索生成的html页面时使用的编码,默认为ISO-8859-1, 在向页面中插入图表时需要进行正则匹配,如果要匹配中文需要将其设置为UTF-8 <param name="-outputencoding" value="UTF-8" /> --> <param name="-types" /> <param name="-visibility" /> <!-- 提供外部javadoc地址,可以直接导航过去 --> <param name="-link" value="http://download.oracle.com/javaee/6/api/" /> <param name="-link" value="http://static.springsource.org/spring/docs/2.5.x/api/" /> <param name="-link" value="http://docs.jboss.org/hibernate/core/3.6/javadocs/" /> <param name="-link" value="http://logging.apache.org/log4j/1.2/apidocs/" /> </doclet> </javadoc> <echo message="javadoc completed!" /> </target>
以上<param>配置的比较完整了,可以在javadoc中嵌入一个相当完整和详细的UML图表。
三。问题
使用过程中发现这样的问题,就是用ant生成javadoc时,只能在package页中嵌入UNL图表,而每一个具体的类页面中却不能实现嵌入,这是为什么呢?
于是乎,注释掉quiet参数查看详细日志
<!-- 是否显示详细日志信息,出问题时可以打开进行查看 <param name="-quiet" /> -->
结果发现,日志打印如下信息
[javadoc] Warning, could not find a line that matches the pattern '(Class|Interface|Enum) MultipartFileValidator.*'. [javadoc] Class diagram reference not inserted
意思是没有成功进行正则匹配,导致图表没有插入。这就比较奇怪,为什么插入包图表时没有问题呢?
ok,还是看下源码吧,问题出在org.umlgraph.doclet.UmlGraphDoc中。
图表插入包中的正则匹配规则是
Pattern.compile("</H2>")
而图表插入类中的匹配规则是
Pattern.compile("(Class|Interface|Enum) " + classDoc.name() +".*")
因为javadoc是使用UTF-8编码生成的,所以在html页面中“Class”变成了“类”,所以匹配不上。
清楚了这一点后对源码做了如下修改:
方法一:
Pattern.compile("(Class|Interface|Enum|类|接口|枚举) " + classDoc.name() +".*")
不过这时doclet中的参数outputencoding要设置为UTF-8:
<param name="-outputencoding" value="UTF-8" />
方法二:
Pattern.compile(".*" + classDoc.name() +"</H2>.*")
这与包匹配规则类似,不过确实很好用,推荐使用第二种方式进行修改。
ok,重新编译,打jar包,附件中为使用第二种方式打的jar包。
补充说明一下:编译UmlGraph需要用到JAVA_HOME/lib下的tools.jar。
评论
由于sun呗oracle收购了,所以其将jdk的api路径改变了,现在jdk6的api路径如下:
<param name="-link" value="http://download.oracle.com/javaee/6/api/" />
路径配置错误会报错的。
发表评论
-
Oracle数据库文档构造器--Oraschemadoc
2011-06-30 18:23 1477Oraschemadoc---Oracle Schema Do ... -
用SchemaSpy制作数据库结构文档
2011-02-14 16:12 2400在包含数据库的项目管理中,数据库文档是一个不可缺少的资源,一般 ... -
用Doxygen生成源代码文档
2011-01-14 18:35 3055doxygen是用于从java源代码生成技术文档的工具,有些类 ... -
hudson--构建存档
2011-01-11 11:25 1930每一次构建,hudson都会在HUDSON_HOME/jobs ... -
hudson--javadoc报告
2011-01-11 10:30 2243使用hudson可以很方便的将javadoc报告集成进来,当然 ... -
hudson--findbugs报告
2011-01-06 11:13 7026如果我们的ant构建文 ... -
hudson--构建依赖
2011-01-04 14:39 2079hudson一个比较好的功能是提供了构建依赖,就是说,一个jo ... -
hudson--环境变量
2011-01-04 14:17 4432在执行构建时,我们可以为每个JOB指定一些环境变量,方法如下: ... -
hudson--build配置
2011-01-04 11:55 3123在每个job中,我们可以指定其构建方式,比如是通过ant或ma ... -
hudson--安全设置
2011-01-01 17:44 4716hudson默认是不需要登录 ... -
hudson--junit测试报告
2010-12-31 18:46 6410如果你的项目在构建时进行了单元测试,可以在hudson中直接查 ... -
hudson--部署设置
2010-12-31 18:23 3752需要为hudson安装Deploy to container ... -
hudson--JOB_WORKSPACE
2010-12-31 18:04 2332JOB_WORKSPACE:就是构建时使用的目录,也就是从代码 ... -
hudson--构建执行顺序
2010-12-31 17:30 2317hudson的构建顺序与普通的持续集成一样,遵循着先更新代码- ... -
hudson--scp设置
2010-12-31 17:18 4187如果是远程部署,你就会需要一个scp插件,可以在hudson的 ... -
hudson--配置邮件
2010-12-31 15:52 3346如果希望在构建完成后将构建结果以邮件的形式发送给相关的用户,推 ... -
hudson--系统管理
2010-12-31 15:08 2130hudson的总体配置,都是在“系统管理”中进行配置的,hud ... -
hudson--URL选项
2010-12-31 14:11 1428hudson为我们提供了一些通过url快速执行的功能 htt ... -
hudson--HUDSON_HOME
2010-12-31 13:54 4519Hudson需要一些磁盘空间来执行构建 ... -
hudson--插件管理
2010-12-30 18:25 7505hudson的好用基本体现在其众多而强大的插件上,在“系统管理 ...
相关推荐
UMLGraph, 声明性规范和UML图绘制 UMLGraph - UML图的声明性绘制UMLGraph允许声明性规范和UML图绘制。 你可以通过浏览系统的文档,或者通过将它打印到。要安装运行UMLGraph所需的元素,只需将lib目录的内容复制到与...
这些图表在软件开发过程中起着至关重要的作用,因为它们帮助开发者、设计师和项目团队可视化系统的结构和行为,从而促进沟通、理解和设计验证。 在解压 "UMLGraph-5.4.zip" 后,用户可以找到以下资源: 1. **文档*...
因为javadoc是使用UTF-8编码生成的,所以在html页面中“Class”变成了“类”,所以匹配不上。修改内容如下: Pattern.compile("(Class|Interface|Enum|类|接口|枚举) " + classDoc.name() +".*")
LightUML是UMLGraph(www.spinellis.gr/sw/umlgraph/)的Eclipse(TM)(www.eclipse.org)集成,UMLGraph是一种用于从Java项目和程序包生成类图的轻型工具。 需要先前安装的GraphViz(www.graphviz.org)!