java - 如何在 Java 文档中绘制 UML?

标签 java uml javadoc

<分区>

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

最佳答案

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

1) UmlGraph文档

2) 应用程序

3) 工作

我可能会说最好的是选项 3,这是因为它是唯一不需要在开发电脑上安装任何东西的选项。

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

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

关于java - 如何在 Java 文档中绘制 UML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4597046/

相关文章:

Java 代码无法使用 SQL 语句进行编译

java - Java中如何实现 "Data Streaming"- 数据库交互?

具有相互依赖的枚举的 UML 图

deployment - 如何检查我的 UML 部署图是否符合 UML?

uml - 在事件图中显示多个选项选择

java - 从特定类中删除 javadoc Sonar 检查

java.lang.UnsupportedOperationException : JsonObject - Not sure why

java - 如何为我的 ClusterManager 使用 onClusterItemRendered 等函数?

模块信息中的 Javadoc 注释

javadoc - 适用于GNU M4语言的Doxygen