In an attempt to improve PlantUML documentation...
Wiki Toc View page history Add new chapter Reorder page Raw
![]() |
![]() |
||||
Foire Aux Questions (FAQ) |
Frequently Asked Questions (FAQ) |
||||
|
|||||
|
|
||||
Comprendre l'objectif de PlantUML |
Understanding the Purpose of PlantUML |
||||
|
|||||
PlantUML est un outil robuste utilisé pour créer des diagrammes UML par le biais d'une description textuelle simple et facilement interprétable. Cependant, il est essentiel de noter qu'il ne limite pas la création de diagrammes incohérents - tels que l'héritage mutuel entre deux classes. Par conséquent, il fonctionne plus comme un outil de dessin que comme un outil de modélisation.
Explication des raisons pour lesquelles PlantUML pourrait être votre outil de référence pour la création de diagrammes :
|
PlantUML stands as a robust tool utilized to craft UML diagrams through a straightforward and easily interpretable text description. However, it is pivotal to note that it does not restrict the creation of inconsistent diagrams — such as mutual inheritance between two classes. Consequently, it functions more as a drawing tool rather than a modeling tool.
Exploring why PlantUML could be your go-to for diagram creation:
|
||||
Mécontent de l'esthétique des diagrammes de PlantUML ? Voici ce que vous pouvez faire |
Unhappy with PlantUML's Diagram Aesthetics? Here's What You Can Do |
||||
|
|||||
|
|
||||
Combien de temps sont stockées les images générées par le service en ligne PlantUML ? |
How long do the images generated by PlantUML Server live for? |
||||
|
|||||
Les liens (png ou svg) générés par le serveur PlantUML sont valides indéfiniment (c'est à dire tant que le service est disponible).
Toutefois, nous ne stockons aucune image sur nos serveurs.
Cela peut paraître contradictoire. Ça ne l'est pas : la totalité du diagramme est compressé dans l'URL elle-même. Quand le serveur reçoit une URL, il la décompresse pour retrouver le texte du diagramme correspondant et générer l'image. Il n'y a pas besoin de stocker quoi que ce soit. D'ailleurs, même si le serveur est hors-service, vous pouvez récupérer le diagramme en utilisant l'option
-decodeurl de la ligne de commande. Enfin, le texte du diagramme est aussi stocké dans les métadonnées du fichier PNG, donc vous pouvez le récupérer depuis une image.
Parfois, nous sommes amenés à activer des traces HTTP sur notre server. Nous faisons ceci pour analyser les requêtes que nous recevons lorsque nous avons des problèmes de performance (ce qui n'arrive pas très souvent). Une fois le problème résolu, nous désactivons les traces HTTP et nous supprimons les fichiers de log.
À propos de la confidentialité des données, même si nous ne stockons pas les diagrammes générés, il faut savoir que comme le protocole HTTP n'est pas sécurisé, il est assez facile d'intercepter les diagrammes.
Vous devriez donc probablement installer un serveur local sur votre propre réseau si vous prévoyez de générer des diagrammes contenant des informations sensibles. Vous pouvez le faire sans aucune connaissance de Java/J2EE puisqu'il y a un petit serveur web inclus dans PlantUML.jar
|
Links to png or svg generated by PlantUML Server are valid forever (that is as long as the server is up).
However, we do not store any diagrams on our servers. This may sound contradictory. It is not: the whole diagram is compressed into the URL itself. When the server receives the URL, it decompresses the URL to retrieve the diagram text and generates the image. There is no need to store anything. Even if the server is down, you can retrieve the diagram using the flag -decodeurl with the command line. Furthermore, the diagram data is stored in PNG metadata, so you can fetch it even from a downloaded image.
Occasionally we may activate HTTP traces on our server. This is mainly for performance issues (when we have some) to understand the traffic we get. Once the issue solved, we turn back off HTTP traces and we remove the logs.
Concerning sensitive content: even if we do not store the generated diagrams, please be aware that all traffic goes through HTTP, so it's easy to catch.
So you should probably install a local server on your own network if you plan to generate diagrams with sensitive information. You can do this with no Java/J2EE knowledge since there is a tiny web server included in PlantUML.jar.
|
||||
Cela ne fonctionne pas avec ma configuration ! |
It does not work on my config! |
||||
|
|||||
PlantUML a été installé sur de nombreux systèmes. Toutefois, certains utilisateurs ont parfois rencontré des difficultés en l'installant.
Vous pouvez consulter cette page qui donne des conseils spécifiques à l'installation si vous avez des problèmes.
|
PlantUML has been installed on various systems, and some users have reported minor issues when installing it.
You can have a look on this page which give advises if something is wrong. |
||||
Quelle version de GraphViz dois-je utiliser ? |
Which version of Graphviz should I use? |
||||
|
|||||
Vous trouverez plus d'informations sur GraphViz ici.
Les versions suivantes ont été testées et sont connues pour fonctionner :
dot -c en ligne de commande pour finaliser l'installation. Il se peut que vous deviez exécuter dot -c avec les droits d'administrateur.
Si vous compilez Graphviz vous-même, vous devez le construire avec libexpat pour qu'il fonctionne avec PlantUML.
|
You have more information about Graphviz about Graphviz here.
The following version have been tested, and are known to work:
dot -c in a command line to finalize the installation. You may have to run dot -c with Administrator Right.
If you compile Graphviz by yourself, you have to build it with libexpat in order to work with PlantUML.
|
||||
Ce logiciel est-il mature ? Je ne vois aucune nouvelle version ? |
Is this mature? I don't see any new release? |
||||
|
|||||
Les tendances Google sont très positives. Et il y a même quelques livres qui mentionnent PlantUML. Donc oui, le logiciel est mature.
Il faut dire que PlantUML est développé en integration continue. Cela signifie qu'il y a régulièrement de nouvelles versions, avec (on l'espère!) une compatibilité ascendante. Donc le fichier PlantUML.jar évolue avec le temps tout en conservant le même nom.
Si vous voulez avoir des détails sur la version que vous utilisez, vous pouvez lancer la ligne de commande suivante:
ou utiliser le diagramme spécial suivant :
|
Google Trends are somehow positive. And there are few books that mention PlantUML. So yes, it's mature.
Note that PlantUML is developed with continuous integration in mind. That means that there are new releases quite often, with (hopefully!) backward compatibility. So the file
PlantUML.jar may changed over time, while keeping the same name.
If you want to know the exact version you are using, you can type in the command line:
or use the following small special diagram description:
|
||||
Comment savoir si une nouvelle version est disponible ? |
How to know if a new release is available? |
||||
|
|||||
Pour vérifier si une nouvelle version est disponible, vous pouvez aller sur la page de téléchargement.
Vous pouvez aussi consulter les flux rss suivants:
Ou alors vous pouvez lancer la commande suivante:
Ou alors utiliser le diagramme spécial suivant:
|
To check if a newer version is available for download, you can go to the download page.
You can also subscribe to the following rss flows:
Or you can use the command line:
Or use the following small special diagram description:
|
||||
Je veux générer de très grands diagrammes! |
I want to generate huge diagrams! |
||||
|
|||||
PlantUML limite la taille des images à 4096 pixels en largeur et en hauteur. Vous pouvez modifier cette limite grâce à une variable d'environnement:
PLANTUML_LIMIT_SIZE . Vous devez régler cette variable avant de lancer PlantUML, de la façon suivante:
ou bien
Une autre façon est de mettre une option sur la ligne de commande:
Notez que si vous générez de très grands diagrammes, (par exemple, comme 20 000 x 10 000 pixels), vous risquez d'avoir des problèmes d'allocation mémoire. La solution est de rajouter le paramètre suivant à la JVM: -Xmx1024m. |
PlantUML limits image width and height to 4096. There is an environment variable that you can set to override this limit:
PLANTUML_LIMIT_SIZE . You have to define this variable before launching PlantUML, something like:
or
Another way is an option in the command line:
Note that if you generate very big diagrams, (for example, something like 20 000 x 10 000 pixels), you can have some memory issues. The solution is to add this parameter to the java vm : -Xmx1024m. |
||||
J'ai un problème avec les caractères accentués. |
I have issues with accented characters. |
||||
|
|||||
L'encodage des caractères est quelquechose de subtil... Par défaut, PlantUML utilise le codage par défaut de votre plateforme, qui peut être ou ne pas être de l'UTF-8. Si vous voulez savoir quel encodage vous utilisez, vous pouvez utiliser la commande suivante:
Si vous voulez utiliser un autre encodage, par exemple de l'UTF-8, vous pouvez utiliser l'option -charset :
Vous trouverez ici des informations sur l'unicode . Notez que même si Java ne supporte pas le caractère B.O.M. (Byte Order Mark) dans un fichier UTF-8, un contournement a été implémenté dans PlantUML, donc ces caractères ne devraient pas poser de problèmes. |
Characters encoding is a subtle thing... By default, PlantUML use the default charset of your platform, which may or may not be UTF-8 . If you want to know which charset you are using, you can type the following command:
If you want to use a different charset, for example UTF-8, you can use the -charset flag :
You can also find here information about unicode . Note that even if Java does not support B.O.M. (Byte Order Mark) in UTF-8 format file, a workaround has been put into PlantUML, so this should not be an issue. |
||||
J'ai un problème avec les caractères asiatiques. |
I have issues with Asian characters. |
||||
|
|||||
Des utilisateurs japonais ont précisé qu'ils avaient besoin de régler la variable
LANG à la valeur ja_JP.UTF-8 dans leur console avant de lancer PlantUML.
Depuis la nouvelle architecture, tout devrait fonctionner directement et nativement parce que Java gère directement les caractères asiatiques. |
Some Japanese users reported that they have to set the
LANG variable to ja_JP.UTF-8 in their shell before launching PlantUML.
Since the new architecture, it should simply work, because Java knows how to draw East Asian characters. |
||||
Comment générer de l'EPS ? |
How to generate EPS? |
||||
|
|||||
Vous pouvez utiliser l'option
-teps sur la ligne de commande ou bien format="eps" avec la tâche ANT.
|
|||||
Sous quelle licence est distribué PlantUML ? |
Under which license is PlantUML distributed? |
||||
|
|||||
PlantUML est distribué sous la licence GPL.
Vous pouvez visualiser la licence en utilisant la ligne de commande suivante:
Ou vous pouvez utiliser le diagramme spécial:
|
PlantUML is distributed under the GPL license.
You can print the license using the command line option:
Or you can use the special diagram:
|
||||
Je n'aime pas la licence GPL ! |
I don't like GPL! |
||||
|
|||||
Vous pouvez aussi utiliser :
Certaines fonctionnalités ne sont pas incluses dans ces versions (DITAA par exemple).
Vous pouvez visualiser les licences de ces versions à l'aide de la ligne de commande suivante:
Ou vous pouvez utiliser le diagramme spécial suivant:
|
You can also use:
Those versions miss few features (DITAA for example), but are 100% able to generate UML diagrams.
You can print the license of these versions using the command line option:
Or you can use the special diagram:
|
||||
Les images générées par PlantUML sont-elles couvertes par la licence GPL/LGPL/ASL/EPL/MIT ? |
Are images generated by PlantUML covered by the GPL/LGPL/ASL/EPL/MIT license? |
||||
|
|||||
Non, elles ne sont pas couvertes par ces licences.
Les images (quelquesoit leur format : PNG, SVG...) générées par l'exécution de PlantUML sont la propriété de l'auteur du texte source du diagramme correspondant (exprimé en langage PlantUML).
Les images générées par l'exécution de PlantUML ne sont pas considérée comme des créations régies par la licence (en anglais covered work). Vous pouvez faire ce que vous voulez avec ces images.
Les images générées peuvent être utilisées sans aucune référence à la licence GPL/LGPL/ASL/EPL/MIT. Il n'est même pas nécessaire de notifier que vous avez créé ces images avec PlantUML, bien que si vous le faites, cela sera grandement apprécié par l'équipe PlantUML.
Il y a une exception : si la description textuelle en langage PlantUML est elle-même soumise à une licence quelconque (comme la GPL/LGPL/ASL/EPL/MIT), alors les images générées sont logiquement elles aussi soumises à cette même licence.
|
No, they are not.
Images (whatever their format : PNG, SVG...) generated by the execution of PlantUML are owned by the author of their corresponding sources code (that is, their textual description in PlantUML language).
Images generated by the execution of PlantUML are not considered as covered work. You can do whatever you want with them.
The generated images can then be used without any reference to the GPL/LGPL/ASL/EPL/MIT license. It is not even necessary to stipulate that they have been generated with PlantUML, although this will be appreciated by PlantUML team.
There is an exception : if the textual description in PlantUML language is also covered by some license (like the GPL/LGPL/ASL/EPL/MIT), then the generated images are logically covered by this license.
|
||||
Puis-je redistribuer la version LGPL du fichier binaire PlantUML.jar et y a-t-il des contraintes à ce sujet ? |
Can I redistribute the LGPL binary file PlantUML.jar and if there any constraints about it? |
||||
|
|||||
Tant que vous ne modifiez pas les sources Java et le fichier jar, vous pouvez intégrer plantuml.jar dans votre propre logiciel, même s'il n'est pas Open Source.
La seule contrainte est que vous avez à stipuler quelquepart dans votre propre licence ou dans votre documentation que vous utilisez PlantUML est que PlantUML est distribué sous licence LGPL.
Vous pouvez même vendre votre logiciel et gagner de l'argent, sans aucune autre contrainte (dans ce cas, un don serait apprécié
:-)
|
As long as you do not modify the Java source code and the jar file, you can integrate PlantUML.jar in your own closed source software.
The only constraint is that you have to mention somewhere in your own license or in your documentation that you are using PlantUML and that PlantUML is distributed under LGPL.
You can then even sell your software and earn money, without any other constraints (although donation will be appreciate in that case
:-)
|
||||
Quelle est la licence de la syntaxe PlantUML ? |
What is the license of the PlantUML syntax? |
||||
|
|||||
Il n'y a pas de licence pour la syntaxe PlantUML en elle-même: cela signifie que tout le monde peut l'utiliser.
Si vous utilisez un diagramme PlantUML dans un commentaire de votre propre code, ces commentaires vous appartiennent et ne sont pas considérés comme une création régie par la licence (en anglais covered work). Ces commentaires ne sont pas couverts par la licence GPL/LGPL/APL/EPL/MIT.
C'est seulement l'implémentation de PlantUML (c'est à dire le programme Java PlantUML) qui est couvert par la licence GPL, LGPL, ASL, EPL ou MIT. Notez par contre que la documentation publiée sur le site web PlantUML est sous copyright. Mais vous pouvez écrire votre propre documentation.
|
There are no license for the PlantUML syntax itself : this means that everybody can use it.
So you can use PlantUML comments into your own code : those comments are owned by yourself, and are not considered as covered work, and are not covered by the GPL/LGPL/APL/EPL/MIT license.
Only the current implementation (that is, PlantUML program) is licensed under GPL, LGPL, ASL, EPL or MIT. On the other hand note that the documentation (examples, notices, ...) published in the PlantUML website is copyrighted. But you can still write your own documentation.
|
||||
Que signifie l'exception EmptySvgException ? |
What does EmptySvgException mean? |
||||
|
|||||
PlantUML utilise Graphviz pour générer certains diagrammes. De ce fait PlantUML lance l'exécution du programme dot et récupère les informations générées par dot dans un flux SVG.
Cette exception signifie que PlantUML récupère un flux vide de la part de dot et ne peut donc pas générer de diagrammes UML. Ceci peut être dû à plusieurs causes:
|
PlantUML is using Graphviz to generate some diagrams. So PlantUML is launching dot program and retrieve the information generated by dot as a SVG flow.
This message means that PlantUML is getting an empty flow from dot execution, and therefore cannot generate UML diagrams. There may be several reasons why this happens:
|
||||
Could not initialize class net.sourceforge.plantuml.ugraphic.UFont |
Could not initialize class net.sourceforge.plantuml.ugraphic.UFont |
||||
|
|||||
Si le message d'erreur
java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.plantuml.ugraphic.UFont s'affiche, cela signifie probablement qu'aucune police de caractères n'est installée sur votre serveur.
Vous pouvez résoudre ce problème en ajoutant fontconfig sur votre système
Il peut être aussi nécessaire d'installer:
|
If you have the error message
java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.plantuml.ugraphic.UFont , it probably means that there are no fonts installed on your server.
You can solve it by adding fontconfig on your system:
You may also need to install
|
||||
J'ai un message à propos de X11 ou headless ! |
I have a message complaining about X11 or headless on MacOS Ventura ! |
||||
|
|||||
Si vous exécutez PlantUML sur un serveur linux sans capacité d'affichage, il est possible que vous ayez les messages d'erreur suivants:
-Djava.awt.headless=true .
Par exemple :
If you see a similar message on MacOS Ventura after running plantuml with no arguments, this is a known issue but does not appear to indicate a problem since sub-commands (like -gui ) do work.
WARNING This translation need to be updated. WARNING |
If you get this exception on MacOS Ventura from
plantuml with no arguments, adding -gui might work around the problem. This is a known issue but does not appear to indicate a
problem since sub-commands (like -gui ) do work.
If this is not enough, see the next section.
I have a message complaining about X11 or headless!If you are running PlantUML on a linux server without graphical capability, you may have some error message:
-Djava.awt.headless=true .
For example:
|
||||
J'ai une erreur UnsatisfiedLinkError sous Mac OS X ! |
I have an UnsatisfiedLinkError under Mac OS X! |
||||
|
|||||
Sous Mac OS X, si vous rencontrez un message d'erreur suivant:
Vous pouvez suivre les instructions expliquées ici http://stackoverflow.com/questions/25914757/osx-yosemite-jvm-shared-library-does-not-contain-the-jni-createjavavm-symbol:
|
Under Mac OS X, if you have some error message like:
You need to follow the instructions on http://stackoverflow.com/questions/25914757/osx-yosemite-jvm-shared-library-does-not-contain-the-jni-createjavavm-symbol:
|
||||
Les scripts PlantUML prennent le focus du clavier ! |
PlantUML scripts are grabbing keyboard/window focus! |
||||
|
|||||
En fonction de votre configuration, vous pouvez essayer l'option
-Djava.awt.headless=true .Par exemple:
|
Depending on your configuration, you can try the flag
-Djava.awt.headless=true .For example:
|
||||
Est-ce que @startuml est nécéssaire avec l'option -pipe ? |
Is @startuml needed in with -pipe flag? |
||||
|
|||||
Réponse courte: Oui, il faut mettre @startuml (ou alors @startditaa/@startjcckit...) au début d'un diagramme.
Réponse longue:
La ligne @startuml/@startditaa/@startjcckit est utilisée pour connaître le type de diagramme (UML, ditaa, jcckit...) et aussi parce qu'il est possible de mettre en option un nom de fichier après @startXXX. De plus, cette ligne permet aussi d'avoir plusieurs diagrammes dans un même fichier.
Les toutes premières version de PlantUML ne géraient qu'un seul type de diagramme (UML). De plus, quand vous utilisez l'option -pipe, puisque le diagramme est écrit vers la sortie standard, il ne pouvait y avoir qu'un seul diagramme. Et pour finir, donner un nom de fichier n'avait aucun sens. Pour toutes ces raisons, @startuml n'était pas nécessaire pour l'option -pipe à l'époque.
Plus tard, il a été décidé de normaliser tout ceci et d'imposer @startXXX partout, même dans le cas de l'option -pipe, pour éviter les confusions. Malheureusement, certains scripts déjà écrits utilisaient le fait que @startuml n'était pas nécessaire avec l'option -pipe, donc
nous avons gardé ce comportement de façon temporaire, pour permettre à ces anciens scripts d'être encore opérationnels. En effet, nous sommes très attentif à la compatibilité ascendante.
Pour les nouveaux scripts, vous ne devez pas vous appuyer sur ce comportement et vous devez utiliser @startuml/@enduml avec l'option -pipe.
|
Short answer: You do have to use
@startuml (or @startditaa /@startjcckit ...) when starting a diagram.
Long answer:
The @startuml /@startditaa /@startjcckit is useful to determine the type of diagram (uml, ditaa, jcckit...), and because you can optionally put a filename after the @startXYZ . This also allows to have several diagrams inside the same file.
Earlier versions of PlantUML were not supporting ditaa or jcckit. When you use -pipe flag, since the diagram is generated to standard output, there could be only one diagram in the standard input. And there is no need to specify a filename. For all those reasons, @startuml was not needed when using -pipe flag at that time.
Later, it has been decided to normalize this, and to impose @startXYZ everywhere, even with -pipe flag, because it was confusing for users. Unfortunately, since some existing scripts were already using the fact that @startuml is not needed in -pipe flag, it has been decided to keep this as a deprecated option, just to allow older scripts to run. We indeed do pay attention of ascending compatibility.
For newer scripts, you should not rely on this, and use @startXYZ /@endXYZ with the -pipe flag.
|
||||
Et le support de XMI ? |
What about XMI? |
||||
|
|||||
Le travail est en cours!
|
Work is in progress.
|
||||
J'ai trouvé un problème, mais je ne peux pas fournir mon diagramme montrant le problème parce que mon diagramme contient des données confidentielles |
I found an issue, but I cannot provide my diagram showing the issue because my diagram contains confidential data |
||||
|
|||||
Il y a une option
-cypher avec la ligne de commande qui génère un fichier .preproc au lieu d'un fichier image normal.
Le fichier généré .preproc ressemble au diagramme d'entrée sauf que tous les mots (sauf les mots clés du langage PlantUML) ont été remplacés par un ensemble aléatoire de lettres.
Vous pouvez vérifier cela en exécutant plusieurs fois l'option -cypher (vous obtiendrez un texte différent à chaque fois).
Vous pouvez également regarder la classe Cypher.java utilisée pour exécuter cette transformation pour être sûr qu'il n'y a pas de porte dérobée pour récupérer votre diagramme original.
S'il y a un problème dans votre diagramme original, il est probable que le même problème se produise avec le diagramme chiffré.
Puisque le texte chiffré est vraiment sans signification, vous pouvez le partager avec nous en toute sécurité : il n'y aura aucun moyen pour nous de deviner ce sur quoi vous travaillez réellement.
Mais nous serons en mesure de reproduire le problème et de le corriger pour que vous puissiez avoir votre diagramme original (et confidentiel) en état de marche.
|
There is a
-cypher option with the command line that generates a .preproc file instead of regular image file.
The .preproc generated file looks like the input diagram expect that all words (except PlantUML language keywords) have been replaced by a random set of letters.
You can double check this by running several time the -cypher option (you will get a different text each time).
You may also look at the Cypher.java class used to execute this transformation to be sure that there are no backdoor there to retrieve back your original diagram.
If there is an issue in your original diagram, the same issue is likely to also occur with the cyphered one.
Since the cyphered text is really meaningless, you can safely share it with us : there will be no way for us to guess what you are really working on.
But we will be able to reproduce the issue and fix it so that you can have your original (and confidential) diagram working.
|
||||
J'ai une question qui n'est pas listée ! |
I have a question that is not here! |
||||
|
|||||
Vous pouvez utiliser le forum.
Quelqu'un aura peut-être une réponse.
|
You can use the forum facility.
Someone will try to answer your question there.
|
||||