Блог о программировании

Август 6, 2011

 

UML в Javadoc через maven+umlgraph

Где-то год назад писал про различные UML-редакторы.
К сожалению, ситуация толком не изменилась, пока действительно удобного на 100% для себя инструмента для создания UML-диаграмм не нашел.
UMLet - хорошо спасает в 80% случаев для быстрого прототипирования, но иногда его не хватает.

Сейчас речь пойдет не о нем, а о UMLGraph.
Это инструмент, который позволяет осуществлять декларативный способ рисования uml-диаграмм. Другими словами UML диаграммы создаются в текстовом виде, а не рисуется мышкой. Некоторым программистам (в частности мне) работать с текстом несколько удобней, чем с мышкой и со множеством графических объектов.

Возможностей у UMLGraph довольно много, но лично меня интересовали только следующие его возможности:

1. Рисование только диаграмм классов. Использование umlgraph для создания диаграмм последовательности, развертывания и т.д. мне не интересно.
2. Встраивание полученных диаграмм в JavaDoc.
3. Связка с maven-ом.

В результате некоторых манипуляций, можно получить следующий результат:

Что нужно для этого сделать:
1. Необходимо установить Graphiz. Это утилита для рисования различных диаграмм, через нее будем создавать итоговые рисунки.

Если у вас Windows, то для этого нужно:
- Зайти на сайт http://www.graphviz.org/.
- Выбрать пункт Download.
- Прочитать лицензию, если все ОК - нажать "Agreе".
- Выбрать дистрибутив под Windows и установить.

Если у вас например Ubuntu, то все намного проще! Поскольку graphviz есть в стандартных репах, то вы можете установить через apt:

sudo apt-get install graphviz

2. Прописать в pom.xml использование umlgraph

<project ...> ... <reporting> <plugins> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <doclet>org.umlgraph.doclet.UmlGraphDoc</doclet> <docletArtifact> <groupId>org.umlgraph</groupId> <artifactId>doclet</artifactId> <version>5.1</version> </docletArtifact> <additionalparam>-views -inferrel -inferdep -quiet -hide java.* -collpackages java.util.* -qualify -postfixpackage -attributes -operations -types -nodefontclassname "Arial" -nodefontclassabstractname "Arial Italic" -nodefontclasssize 10 -nodefontname "Arial" -nodefontabstractname "Arial Italic" -nodefontsize 10 -nodefonttagname "Arial Italic" -nodefonttagsize 10 -nodefontpackagename "Arial Italic" -nodefontpackagesize 10 -edgefontsize 10 </additionalparam> <useStandardDocletOptions>true</useStandardDocletOptions> </configuration> </plugin> </plugins> </reporting> ... </project>

В additionalparam можно указать свои настройки, чтобы настроить отображение диаграмм на свой вкус и цвет. В этом примере я немного поигрался с шрифтами. Список возможных настроек можно посмотреть здесь: http://www.umlgraph.org/doc/cd-opt.html.

3. Проверить, что программы из Graphiz установлены и доступен. Например можно набрать для этого в командной строке:

dot --help

4. Запустить mvn site. Как обычно в папке target появится директория с документацией.

Выкладываю в для наглядности maven-овский проект umldemo.zip и
полученную в итоге документацию umldemo-apidoc.zip.

Пару полезных заметок:
1. Чтобы исключить класс из диаграммы можно использовать опцию @hidden (см. пример PostA.java)
2. Список возможных опций можно посмотреть здесь: http://www.umlgraph.org/doc/cd-model.html

Java на habrahabr

Июнь 30, 2011

 

JAVA / [Опрос] Как вы обновляете зависимости проектов (maven, ivy, просто склад jar-ок)

Java на habrahabr

Май 17, 2011

 

JAVA / Хранение и вывод версии в java-проекте

Думаю, у многих возникала задача точно знать версию выпущенного jar'a или war'a. Причем хотелось бы иметь способ, позволяющий «простому пользователю» определить версию такого архива. Ниже приведен способ решения этой задачи.

Java на habrahabr

Март 3, 2011

 

JAVA / [Из песочницы] Настройка репозитория Sonatype Nexus для проксирования артефактов Maven

Добрый день!

Про утилиту сборки для Java-проектов Maven и про возможность создания локального сервера для Maven-репозитория с помощью Sonatype Nexus на Хабре уже упоминали (тут и тут). Однако, никакого рецепта по этому поводу представлено не было. Это неудивительно, при наличии достаточно полной грамотной документации. По долгу службы мне пришлось настраивать его на нашей фирме, и оказалось, что советы из официальной документации не совсем подходят. Возникшей проблемой и способом ее решения я и хочу поделиться с сообществом. Но обо всем по порядку.

Зачем это нужно?


Локальный сервер для Maven-репозитория (как, например, Sonatype Nexus) может быть используется для хранения локальных артефактов Maven, и действительно пригодится командам, которые разрабатывают модульные приложения, но не собираются публиковать модули в общий доступ.

Кроме того, такой сервер может работать и для локального хранения удаленных артефактов Maven, что значительно сокращает время загрузки удаленных артефактов всеми членами команды и предохраняет от недоступности внешних репозиториев. Именно о таком использовании и пойдет речь дальше.

Java на habrahabr

Январь 25, 2011

 

JAVA / AspectJ, Spring, Maven

Меня в нашей группе попросили настроить среду и показать использование аспектов AspectJ и интеграция его со Spring.
Мне показалось, что хабросообществу это тоже может быть интересно.

Не буду рассказывать тут о том, что такое AspectJ, кто знает — тому будет полезно, замечу лишь, что аспекты — это возможность добавить на этапе компиляции или рантайма в классы некую функциональность, которой раньше там не было. Или изменить существующую.

Далее: конфигурация проекта и 3 примера аспектов.

Java на habrahabr

Сентябрь 27, 2010

 

JAVA / Покрытие кода для Maven проектов (code coverage)

Структура Java проектов с использованием Maven предполагает некоторое колличество Unit-тестов.
Но одних лишь тестов мало, хочется иметь более полную информацию насколько наши тесты охватывают код.

Для этих целей есть ряд библиотек из которых я использую Emma (офф. сайт).

 
<< < 2 из 2 > >>