【问题标题】:How can I draw UML in Java docs? [closed]如何在 Java 文档中绘制 UML? [关闭]
【发布时间】:2011-01-04 18:30:41
【问题描述】:

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

【问题讨论】:

  • JavaDoc cmets 本质上是文本,这意味着不可能以任何可读的方式将 UML 图嵌入到 JavaDocs 中。

标签: java uml javadoc


【解决方案1】:

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

1) UmlGraphDoc

2) apiviz

3) 不错

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

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

安装它并配置 maven-javadoc-plugin 很容易,但由于它们需要一个单独的应用程序,它会使 UML 生成有点脏,因为如果你想将 uml 生成作为 maven 生命周期的一部分,所有其他开发人员将需要安装 GraphViz(我非常想避免的依赖项)。

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

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


第一次尝试:UmlGraphDoc

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

        <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 一下,很容易找到) 生成的图表比第一个选项更好......

        <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>

第三次尝试(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>

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多