最近在看一些項目的代碼,總是發現很少項目提供出uml圖,或者就是提供uml圖的也有可能并沒有和代碼對應上,如果有正確的uml圖,可以非常方便的為大家更好的理解代碼層次邏輯。其實我們可以使用使用UMLGraph來生成uml圖,直接使用java代碼來生成UMLGraph。對于大部分項目來說,我們一般使用maven和ant(還在使用ant,你out了)來作為項目的編譯工具。
在maven中,我們可以在pom.xml增加:
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.6.1</version>
<configuration>
<doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
<!-- <docletPath>/path/to/UmlGraph.jar</docletPath> -->
<docletArtifact>
<groupId>org.umlgraph</groupId>
<artifactId>doclet</artifactId>
<version>5.1</version>
</docletArtifact>
<additionalparam>-views</additionalparam>
<useStandardDocletOptions>true</useStandardDocletOptions>
</configuration>
</plugin>
</plugins>
</reporting>使用javadoc:aggregate 就可以生成出整個項目按照package的uml圖了。
如果是使用ant,在build.xml中增加target
<target name="genuml">
<property name="uml.dir" value="${basedir}/uml"/>
<property name="src.uml.dir" value="${src.dir}/uml"/>
<mkdir dir="${uml.dir}"/>
<path id="uml.source.path">
<pathelement path="${src.uml.dir}/"/>
<pathelement path="${src.java.dir}"/>
</path>
<javadoc sourcepathref="uml.source.path" packagenames="*" package="true">
<doclet name="org.umlgraph.doclet.UmlGraph" path="${basedir}/lib/UmlGraph.jar">
<param name="-d" value="${uml.dir}"/>
</doclet>
</javadoc>
<apply executable="dot" dest="${uml.dir}" parallel="false">
<arg value="-Tpng"/>
<arg value="-o"/>
<targetfile/>
<srcfile/>
<fileset dir="${uml.dir}" includes="*.dot"/>
<mapper type="glob" from="*.dot" to="*.png"/>
</apply>
</target>
注意:要正常使用 UMLGraph,您必須先安裝 Graphviz 工具,請自己google相關信息。