Javadoc con Diagramas de Clases usando Graphviz + UMLGraph + Maven
Una de las herramientas más importantes con las que cuenta la plataforma Java es, sin duda, el javadoc. A través de ella es posible crear una referencia completa y homogénea de todo el conjunto de clases definidas es nuestro proyecto.
Toda página de una clase del javadoc está dividida en distintas zonas, la primera de ellas muestra la situación jerárquica de la clase respecto a la clase padre Object. Bajo la situación jerárquica aparece la lista de interfaces que implementa si existe alguna y, por último, la lista de clases que la extienden. Para las interfaces aparece la lista de superinterfaz en primer lugar y la lista de subinterfaces en segundo.
Aunque esta información pueda ser suficiente en muchos casos, no estaría de más completarla con diagramas de clases que permitan una rápida visualización de la jerarquía de clases de nuestro proyecto. Ese es el objetivo de este post, añadir diagramas de clases UML a nuestro javadoc.
Para ello necesitaremos dos cosas básicamente :
- Graphviz, librería que permite la generación de gráficos.
- UMLGraph plugin para maven que sobreescribe el doclet que genera el javadoc para insertar los gráficos generados por Graphviz.
- Maven
A continuación vamos a ver como instalar Graphviz y como configurar el pom.xml del proyecto maven para que use el plugin UMLGraph.
Instalación de Graphviz
Hay varias formas de hacerlo, bajando el fuente y compilando, haciendo un checkout del repositorio CVS o dejando que el sistema de paquetes de tu sistema operativo lo haga todo por tí ;-). Esto último es lo que haremos pues la finalidad de éste post es otra.
sudo apt-get update sudo apt-get install graphviz man dot
La última entrada es sólo para comprobar que el paquete ha sido instalado correctamente.
Modificación del fichero pom.xml del proyecto
Simplemente se debe añadir al fichero las siguientes líneas de código
...
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<doclet>gr.spinellis.umlgraph.doclet.UmlGraphDoc</doclet>
<docletArtifact>
<groupId>gr.spinellis</groupId>
<artifactId>UmlGraph</artifactId>
<version>4.6</version>
</docletArtifact>
<additionalparam>
-inferrel -inferdep -quiet -hide java.* -collpackages java.util.* -qualify
-postfixpackage -nodefontsize 9
-nodefontpackagesize 7
</additionalparam>
</configuration>
</plugin>
</plugins>
</reporting>
...
Para generar el javadoc se ejecutará el comando mvn javadoc:javadoc dentro del directorio
donde se encuentra el fichero pom.xml.