I've been using doxygen for a while successfully. I also use DOT from graphviz. Now I am trying to integrate PlantUML. I installed java and downloaded plantuml.jar. I added a simple example to one of my doxygen comment blocks
/*!
\brief get the server's response to our upload
\returns a \ref ServerResponse
\startuml{getServerUploadResponse.png} "getting the server response"
device -> server: test1
server --> device: test2
\enduml
*/
... and set the doxygen config file like so:
HAVE_DOT = YES
PLANTUML_JAR_PATH = "Z:\Kane\softwareDev\tools\plantuml.jar"
but doxygen gives me an error; here is my console output (I'm using mingw on win7)
$ doxygen doxyconfig
error: Problems running PlantUML. Verify that the command 'java -jar "Z:/Kane/softwareDev/tools\plantuml.jar" -h' works from the command line. Exit code: 1
$ java -jar "Z:/Kane/softwareDev/tools\plantuml.jar" -h
Usage: java -jar plantuml.jar [options] -gui
(to execute the GUI)
or java -jar plantuml.jar [options] [file/dir] [file/dir] [file/dir]
(to process files or directories)
You can use the following wildcards in files/dirs:
* means any characters but '\'
? one and only one character but '\'
** means any characters (used to recurse through directories)
where options include:
-gui To run the graphical user interface
-tpng To generate images using PNG format (default)
-tsvg To generate images using SVG format
-teps To generate images using EPS format
-tpdf To generate images using PDF format
-tvdx To generate images using VDX format
-txmi To generate XMI file for class diagram
-thtml To generate HTML files for class diagram
-ttxt To generate images with ASCII art
-tutxt To generate images with ASCII art using Unicode characters
-o[utput] "dir" To generate images in the specified directory
-DVAR1=value To set a preprocessing variable as if '!define VAR1 value' were used
-Sparam1=value To set a skin parameter as if 'skinparam param1 value' were used
-r[ecurse] recurse through directories
-config "file" To read the provided config file before each diagram
-charset xxx To use a specific charset (default is windows-1252)
-e[x]clude pattern To exclude files that match the provided pattern
-metadata To retrieve PlantUML sources from PNG images
-version To display information about PlantUML and Java versions
-checkversion To check if a newer version is available for download
-v[erbose] To have log information
-quiet To NOT print error message into the console
-keepfiles To NOT delete temporary files after process
-h[elp] To display this help message
-testdot To test the installation of graphviz
-graphvizdot "exe" To specify dot executable
-p[ipe] To use stdin for PlantUML source and stdout for PNG/SVG/EPS generation
-encodesprite 4|8|16[z] "file" To encode a sprite at gray level (z for compression) from an image
-computeurl|-encodeurl To compute the encoded URL of a PlantUML source file
-decodeurl To retrieve the PlantUML source from an encoded URL
-syntax To report any syntax error from standard input without generating images
-language To print the list of PlantUML keywords
-nosuggestengine To disable the suggest engine when errors in diagrams
-checkonly To check the syntax of files without generating images
-failfast To stop processing as soon as a syntax error in diagram occurs
-failfast2 To do a first syntax check before processing files, to fail even faster
-pattern To print the list of Regular Expression used by PlantUML
-duration To print the duration of complete diagrams processing
-nbthread N To use (N) threads for processing
-nbthread auto To use 2 threads for processing
-author[s] To print information about PlantUML authors
-overwrite To allow to overwrite read only files
-printfonts To print fonts available on your system
If needed, you can setup the environment variable GRAPHVIZ_DOT.
$ echo $?
0
$ java -jar "Z:/Kane/softwareDev/tools\plantuml.jar" -version
PlantUML version 8026 (Sun Jun 07 04:19:09 CDT 2015)
(GPL source distribution)
Java(TM) SE Runtime Environment
Java HotSpot(TM) Client VM
1.8.0_45-b15
Windows 7
The environment variable GRAPHVIZ_DOT has not been set
Dot executable is c:\Program Files (x86)\Graphviz2.38\bin\dot.exe
Dot version: dot - graphviz version 2.38.0 (20140413.2041)
Installation seems OK. File generation OK
$ doxygen --version
1.8.9.1
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)
$ doxygen doxyconfig
error: Problems running PlantUML. Verify that the command 'java -jar "Z:/Kane/softwareDev/tools\plantuml.jar" -h' works from the command line. Exit code: 1
$
The problem is that PlantUML is not able to locate
Dot
executable.PlantUML requires that either:
Dot
executable is located inPATH
environment variable.GRAPHVIZ_DOT
environment variable is set to executable.If it is not the case, it does not work!
The workflow is as following:
@startuml
and@enduml
tags.Dot
- depending on diagram type (e.g., activity diagrams do not needDot
).Solution:
set "GRAPHVIZ_DOT=c:\path\to\graphviz\bin\dot.exe"
doxygen doxyconfig
Now, PlantUML is able to locate
Dot
executable by usingGRAPHVIZ_DOT
environment variable.I do not know why Doxygen does not hand over
Dot
settings properly to PlantUML. Furthermore, this error usually only pops up on Windows. On GNU/LinuxDot
executable is usually located inPATH
and can be found by PlantUML.