PlantUML используется для
рисования диаграмм UML, используя простое и читаемое человеком текстовое описание.
Будьте осторожны, поскольку это не помешает вам рисовать непоследовательные диаграммы (например, когда два класса наследуют друг от друга).
Так что это скорее инструмент для
рисования, чем для
моделирования.
Есть несколько причин, по которым PlantUML может быть хорошим выбором для создания диаграмм:
- PlantUML - текстовый инструмент, что означает, что вы можете создавать диаграммы, составляя предложения на простом, понятном человеку языке. Это облегчает понимание и редактирование структуры ваших диаграмм, даже если вы не являетесь экспертом в инструментах создания диаграмм.
- PlantUML имеет открытый исходный код и доступен бесплатно, что означает, что вы можете использовать его без лицензионных отчислений или абонентской платы.
- PlantUML использует интеллектуальные алгоритмы компоновки, чтобы расположить элементы ваших диаграмм четким и понятным образом, экономя ваше время и усилия на ручное позиционирование и выравнивание отдельных элементов.
- PlantUML является генератором, что означает, что он автоматически создает диаграммы на основе предоставленного вами текста. Это облегчает быстрое создание и обновление диаграмм и позволяет вам сосредоточиться на выражении структуры и взаимосвязей ваших диаграмм, а не беспокоиться об их внешнем виде.
- PlantUML обладает высокой степенью настраиваемости и предоставляет множество опций для настройки внешнего вида ваших диаграмм. Вы также можете использовать знания и опыт сообщества PlantUML для поиска решений распространенных проблем, связанных с компоновкой.
В целом, PlantUML - это мощный и универсальный инструмент для быстрого и простого создания профессионально выглядящих диаграмм. Он особенно хорошо подходит для пользователей, которые предпочитают простой текстовый подход к созданию диаграмм и хотят иметь инструмент, который может автоматически обрабатывать макет и внешний вид диаграмм.
In essence, PlantUML emerges as a potent and adaptable tool, facilitating the swift and effortless creation of professional diagrams. It caters especially to individuals who favor a text-based methodology for diagram creation, offering automated assistance in managing the layout and visualization of the diagrams.
WARNING
This translation need to be updated. WARNING
- Вы можете использовать темы в PlantUML
Вы можете использовать
темы в PlantUML для настройки внешнего вида ваших диаграмм. PlantUML предоставляет несколько встроенных тем, которые вы можете использовать, а также вы можете создавать свои собственные темы, определяя
свои цвета и стили.
- PlantUML делает большую часть работы по компоновке за вас
PlantUML делает большую часть работы по компоновке за вас, чтобы вы могли сосредоточиться на выражении взаимосвязей и структуры вашей диаграммы. Он использует интеллектуальные алгоритмы компоновки, чтобы расположить элементы вашей диаграммы четким и понятным способом, экономя время и усилия на ручное позиционирование и выравнивание отдельных элементов. Это делает его отличным инструментом для быстрого создания профессионально выглядящих диаграмм без особых ручных усилий.
- PlantUML - это генератор, а не инструмент позиционирования элементов
PlantUML - это генератор, что означает, что он автоматически создает диаграммы на основе предоставленного вами текста. Это отличается от некоторых других инструментов создания диаграмм, которые позволяют вручную позиционировать и располагать отдельные элементы в диаграмме.
Основное преимущество такого подхода заключается в том, что он позволяет быстро и легко создавать диаграммы, не заботясь о конкретном размещении отдельных элементов. Это также облегчает обновление диаграмм, поскольку вы можете просто изменить текст, представляющий вашу диаграмму, и PlantUML автоматически обновит диаграмму, чтобы отразить ваши изменения.
Одним из потенциальных недостатков использования такого генератора, как PlantUML, является то, что вы можете не иметь такого контроля над точным расположением вашей диаграммы, как при использовании инструмента, позволяющего размещать элементы вручную. Однако для многих пользователей экономия времени и усилий при использовании генератора с лихвой компенсирует это ограничение.
Кроме того,
форум сообщества PlantUML - это отличный ресурс для поиска решений распространенных проблем с компоновкой и обмена советами и рекомендациями по настройке внешнего вида ваших диаграмм.
For those seeking advice or solutions to common layout issues, the [PlantUML community forum](https://forum.plantuml.net/) stands as a vibrant platform to exchange tips and procure answers to your dilemmas, enhancing your mastery over customizing your diagrams.
WARNING
This translation need to be updated. WARNING
Ссылки на png или svg, сгенерированные
PlantUML Server, действительны вечно (то есть до тех пор, пока сервер работает).
Однако мы
не храним никаких диаграмм на наших серверах.
Это может показаться противоречивым. Это не так: вся диаграмма
сжата в самом URL. Когда сервер получает URL, он распаковывает его, чтобы извлечь текст диаграммы и сгенерировать изображение. Нет необходимости хранить что-либо. Даже если сервер не работает, вы можете получить диаграмму с помощью флага
-decodeurl
из
командной строки. Более того, данные диаграммы хранятся в метаданных PNG, поэтому их можно получить даже из загруженного изображения.
Иногда мы можем активировать HTTP-трассировку на нашем сервере. Это делается в основном для решения проблем с производительностью (когда они есть), чтобы понять, какой трафик мы получаем. Как только проблема решена, мы отключаем HTTP-отслеживание и удаляем журналы.
Что касается конфиденциального содержимого: даже если мы не храним сгенерированные диаграммы, имейте в виду, что весь трафик проходит через HTTP, поэтому его легко перехватить.
Поэтому вам, вероятно, следует установить
локальный сервер в вашей собственной сети, если вы планируете генерировать диаграммы с конфиденциальной информацией. Вы можете сделать это без знания Java/J2EE, поскольку в PlantUML.jar включен
крошечный веб-сервер.
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.
You have more information about Graphviz
about Graphviz here.
The following version have been tested, and are known to work:
- 2.26.3
- 2.28
- 2.30.1
- 2.34
- 2.36
- 2.38
- 2.44
- 9.0.0
- 10.0.1
Note that versions 2.39 to 2.42
do not work very well with PlantUML.
With version 2.44, under Windows, you may have to run
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.
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:
java -jar plantuml.jar -version
or use the following small special diagram description:
@startuml
version
@enduml
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:
java -jar plantuml.jar -version
Or use the following small special diagram description:
@startuml
version
@enduml
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:
set PLANTUML_LIMIT_SIZE=8192
or
setenv PLANTUML_LIMIT_SIZE 8192
Another way is an option in the command line:
java -DPLANTUML_LIMIT_SIZE=8192 -jar /path/to/plantuml.jar ...
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.
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:
java -jar plantuml.jar -help
...
-charset XYZ To use a specific charset (default is windows-1252)
...
If you want to use a different charset, for example UTF-8, you can use the
-charset
flag :
java -jar plantuml.jar -charset UTF-8 ...
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.
Some Japanese users reported that they have to set the
LANG
variable to
ja_JP.UTF-8
in their shell before launching PlantUML.
export LANG = ja_JP.UTF-8
Since
the new architecture, it should simply work, because Java knows how to draw East Asian characters.
You can use the
-teps
flag in the command line, or
format="eps"
in
the ANT task.
PlantUML is distributed under the
GPL license.
You can print the license using the command line option:
java -jar plantuml.jar -license
Or you can use the special diagram:
@startuml
license
@enduml
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:
java -jar plantuml.jar -license
Or you can use the special diagram:
@startuml
license
@enduml
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.
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
:-)
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.
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:
- There is an issue with your Graphviz installation. Try a very simple diagram, with only one class for example.
- Your version of Graphviz is too old and is crashing with information provided by PlantUML. Check your version with
testdot
- Your diagram is too complex.
- There is a bug in PlantUML and/or in dot.
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:
sudo yum install fontconfig
or
sudo apt-get install fontconfig
You may also need to install
ttf-droid
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:
- Can't connect to X11 window
- X11 connection rejected because of wrong authentication.
- HeadlessException
Basically, this is because PlantUML needs to have access to some graphical resources (more
information here).
You can turn PlantUML to headless mode, using the flag
-Djava.awt.headless=true
.
For example:
/usr/bin/java -Djava.awt.headless=true -jar /data/PlantUml/plantuml.jar ...
Under Mac OS X, if you have some error message like:
Error java.lang.UnsatisfiedLinkError / liblwawt.dylib /libosxapp.dylib
You need to follow the instructions on
http://stackoverflow.com/questions/25914757/osx-yosemite-jvm-shared-library-does-not-contain-the-jni-createjavavm-symbol:
- Download and install the package: JavaForOSX.
- Found the file
AptanaStidio3.ini
, the file by default located under the directory here: /Applications/Aptana Studio 3/AptanaStudio3.app/Contents/MacOS
- Add
-vm
argument to specify the java which will be used to lunch Aptana Studio: -vm /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
This seems to work only under Java 6, so you may define the following alias to be used in your scripts.
alias java6="export JAVA_HOME=$(/usr/libexec/java_home -v 1.6.0)"
Depending on your configuration, you can try the flag
-Djava.awt.headless=true
.
For example:
/usr/bin/java -Djava.awt.headless=true -jar /path/to/plantuml.jar ...
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.
Work is
in progress.
I found an issue, but I cannot provide my diagram showing the issue because my diagram contains confidential data
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.
You can use the
forum facility.
Someone will try to answer your question there.