如何在Java文档中绘制UML?

时间:2011-01-04 18:30:41

标签: java uml javadoc

我正在尝试找到一个工具/框架/插件,它允许我在我的javadocs注释中绘制UML图。我不需要逆向工程自动化UML图片(由UMLGraph和其他人有效提供)。我希望能够创建自己的自定义图表。你能建议一下吗?

2 个答案:

答案 0 :(得分:1)

我尝试了3种方法,使用maven-javadoc-plugin和doclets在JavaDocs中生成UML Diagrams:

1)UmlGraphDoc

2)apiviz

3)yworks

我可以说最好的是选项3,这是因为它是唯一一个不需要在开发电脑中安装的东西。

对于UmlGraphDoc和apiviz(两个doclet),他们需要在PC中安装GraphViz。

安装它并配置maven-javadoc-plugin很简单,但由于它们需要一个单独的应用程序,它会使UML生成变得有点脏,因为如果你想将uml生成包含在你的maven生命周期中,那么所有其他开发人员需要安装GraphViz(我真想避免的依赖)。

无论如何,这个链接有我遵循的方法,使用yworks(它确实有效):

如下所示我的3次尝试配置,以防你想确认哪一个更好:


第一次尝试:UmlGraphDoc

需要安装graphviz-2.38( google it,很容易找到) 图表很难看,但可以理解!!

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.10.2</version>
            <reportSets>
                <reportSet>
                    <id>uml</id>
                    <reports>
                        <report>javadoc</report>
                    </reports>
                    <configuration>
                        <name>uml</name>
                        <destDir>uml</destDir>
                        <quiet>true</quiet>
                        <aggregate>true</aggregate>
                        <show>private</show>
                        <doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
                        <docletArtifact>
                            <groupId>org.umlgraph</groupId>
                            <artifactId>umlgraph</artifactId>
                            <version>5.6.6</version>
                        </docletArtifact>
                        <additionalparam>
                            -inferrel -inferdep -quiet -hide java.* -hide org.eclipse.* -collpackages java.util.* -postfixpackage
                            -nodefontsize 9 -nodefontpackagesize 7 -attributes -types -visibility -operations -constructors
                            -enumerations -enumconstants -views
                        </additionalparam>
                        <useStandardDocletOptions>true</useStandardDocletOptions>
                    </configuration>
                </reportSet>
            </reportSets>
        </plugin>

第二次尝试:Apiviz

需要安装graphviz-2.38( Google it,很容易找到) 生成的图表比第一个选项更好......

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <name>JavaDocUML</name>
                <destDir>uml</destDir>
                <doclet>org.jboss.apiviz.APIviz</doclet>
                <stylesheetfile>${basedir}/src/main/resources/javadoc/javadoc-stylesheet.css</stylesheetfile>
                <docletArtifact>
                    <groupId>org.jboss.apiviz</groupId>
                    <artifactId>apiviz</artifactId>
                    <version>1.3.2.GA</version>
                </docletArtifact>
                <useStandardDocletOptions>true</useStandardDocletOptions>
                <charset>UTF-8</charset>
                <encoding>UTF-8</encoding>
                <docencoding>UTF-8</docencoding>
                <breakiterator>true</breakiterator>
                <version>true</version>
                <author>true</author>
                <keywords>true</keywords>
                <additionalparam>
                    -sourceclasspath ${project.build.outputDirectory}
                </additionalparam>
            </configuration>
        </plugin>

第3次尝试(ywork)我推荐这个

图表更易理解,更宽广:D 它不需要在你的电脑上安装任何东西,你只需要从它的网站下载yworks-uml-doclet-3.0_02-jdk1.5并将它放在你的pom.xml附近,并使用相对路径你可以找到它并使用它它如下:

<properties>
    <yworks.uml.path>${basedir}\..\..\tools\yworks-uml-doclet-3.0_02-jdk1.5</yworks.uml.path>
</properties>
.
.
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.10.2</version>
            <configuration>
                <name>JavaDocUML</name>
                <destDir>uml</destDir>
                <!-- Doclet -->
                <doclet>ydoc.doclets.YStandard</doclet>
                <docletPath>${yworks.uml.path}/lib/ydoc.jar:${yworks.uml.path}/resources:${basedir}/target/your.application.jar</docletPath>
                <additionalparam>-umlautogen</additionalparam>
                <useStandardDocletOptions>true</useStandardDocletOptions>
                <!-- bootclasspath required by Sun's JVM -->
                <bootclasspath>${sun.boot.class.path}</bootclasspath>
                <!-- General Javadoc settings -->
                <doctitle>${project.name} (${project.version})</doctitle>
                <show>private</show>
                <!-- Styling -->
                <stylesheetfile>${basedir}/src/main/resources/javadoc/javadoc-stylesheet.css</stylesheetfile>
                <docfilessubdirs>true</docfilessubdirs>
                <!-- Apple's JVM sometimes requires more memory -->
                <additionalJOption>-J-Xmx1024m</additionalJOption>
                <verbose>true</verbose>
            </configuration>
        </plugin>

答案 1 :(得分:0)

实际上,您提到的相同UMLGraph包含Javadoc工具的备用doclet,它将生成UML图作为Javadoc创建的一部分。我在这里找到了这个信息:http://wiki.wsmoak.net/cgi-bin/wiki.pl?UMLGraph