Voici une micro-documentation sur l'outil dont je parlais dans mes précédents billets, qui produit un diagramme UML à partir d'une analyse des dépendances entre des projets Maven.
Pour télécharger l'outil
En utilisant Maven, avec l'adresse de mon repository :
Pour utiliser l'outil depuis Ant
Pour ne pas trop se prendre la tête, mettre le JAR téléchargé avec les autres bibliothèques de Ant : répertoire $ANT_HOME/lib/. Sinon, il faut renseigner <classpath> dans les <taskdef> ci-dessous.
Le principe ensuite consiste à enchaîner deux tâches :
- concaténation de tous les POMs dans un seul fichier XML (xmlconcatscan)
- analyse de ce fichier et génération d'un diagramme UML (poms2uml)
Voici un exemple :
<project name="umlgen" default="umlgen">
<taskdef name="xmlconcatscan"
classname="com.avcompris.tools.ant.XMLConcatScanTask">
<!-- <classpath> ... </classpath> -->
</taskdef>
<taskdef name="poms2uml"
classname="com.avcompris.all.uml.ant.Poms2UmlTask">
<!-- <classpath> ... </classpath> -->
</taskdef>
<target name="umgen">
<mkdir dir="target" />
<xmlconcatscan destFile="temp.xml">
<fileset dir="/home/blabla/workspace"> <!-- workspace location -->
<include name="*/pom.xml" />
</fileset>
</xmlconcatscan>
<poms2uml srcFile="temp.xml"
destFile="all-poms.uml" />
</target>
</project>
Ce projet Ant scanne le répertoire « /home/blabla/workspace », puis produit un diagramme UML dans le fichier « all-poms.uml ». Ce fichier peut ensuite être ouvert et manipulé avec l'outil
StarUML.
Diagramme après nettoyage dans StarUML
Cet exemple est fourni, plus complet, dans le projet Maven avc-commons-all-umldep.
Pour poser une question au support ;-)
Ou par e-mail : david.andriana@free.fr
Pour récupérer les sources en local
Note : les sources sont en UTF-8.
Faire un checkout, projet par projet :
svn co http://svn.avcompris.com/avc-commons-all-noci/trunk avc-commons-all-noci
svn co http://svn.avcompris.com/avc-commons-all-umldep/trunk avc-commons-all-umldep
svn co http://svn.avcompris.com/avc-commons-databeans/trunk avc-commons-databeans
svn co http://svn.avcompris.com/avc-commons-lang/trunk avc-commons-lang
svn co http://svn.avcompris.com/avc-commons-parent/trunk avc-commons-parent
svn co http://svn.avcompris.com/avc-commons-testutil/trunk avc-commons-testutil
svn co http://svn.avcompris.com/avc-plugin-common/trunk avc-plugin-common
svn co http://svn.avcompris.com/avc-plugin-parent/trunk avc-plugin-parent
svn co http://svn.avcompris.com/avc-tools-ant/trunk avc-tools-ant
svn co http://svn.avcompris.com/avc-tools-common/trunk avc-tools-common
svn co http://svn.avcompris.com/avc-tools-databeans-plugin/trunk avc-tools-databeans-plugin
svn co http://svn.avcompris.com/avc-tools-databeans-plugin-ut/trunk avc-tools-databeans-plugin-ut
(12 projets au total)
Ou alors une astuce sous Unix :
- créer des répertoires vides « avc-commons-all-noci », « avc-commons-all-umldep », etc. puis taper la commande suivante :
- for i in `ls`; do svn co http://svn.avcompris.com/$i/trunk $i; done
Pour construire tous les projets avec Maven en ligne de commande, se placer dans le répertoire « avc-commons-all-noci », et taper la commande : mvn install
Pour installer les sources dans son IDE
Pour Eclipse, une fois que tous les projets Maven ont été récupérés en local, se placer dans « avc-commons-all-noci », et taper la commande : mvn eclipse:eclipse
Cela crée les fichiers .project et .classpath attendus par Eclipse.
On peut ensuite importer les projets dans Eclipse.
Pour IDEA : File, Open Project..., et ouvrir avc-commons-all-noci/pom.xml.
Pour lancer l'outil depuis Eclipse
La classe de tests JUnit WorkspaceInsiemeUmlTest dans le projet avc-commons-all-umldep fait justement un test de scan, concaténation et génération d'UML. Il suffit donc de lancer le test JUnit, que ce soit depuis son IDE ou en ligne de commande. Exemple : mvn test
Une fois le test lancé on peut récupérer le fichier « all-poms.uml » dans le répertoire « target », et c'est le même que ci-dessus.