Документация для разработчиков программного обеспечения — это документы, которые описывают, как запустить или использовать артефакт / проект. Обычно документация предоставляет любые выставленные настройки, их использование и значения по умолчанию. Кроме того, информация об интеграции, точках входа и выхода, таких как JMS-очереди, JMX MBeans, объекты DataSource и / или переменные JNDI для запуска и использования артефакта. Существует множество программ и стандартов для подготовки документации такого уровня, в том числе MS Word , Sharepoint, Doxygen , Latex , Wiki , Markdown , Текстиль и т. Д.
За пределами артефактов руководители групп документации, архитекторы и менеджеры проектов обычно просят включить JavaDocs. JavaDocs, в сочетании с Maven, предоставляет больше документации для вашей IDE и лучшую информацию для потребителей вашего артефакта. Другая важная документация включает отчеты о тестировании, покрытие тестами, инструменты статического анализа, зависимости вашего артефакта, журнал изменений и управление проблемами, например Jira или Bugzilla.
Зачем создавать документы?
Лучшая причина позаботиться о документации — это предоставить информацию для внешних разработчиков и членов команды за пределами среды разработки проекта. Документация может быть использована и внутри IDE, и, если честно, сколько раз вы хотели, чтобы у вас были источники и / или JavaDocs для зависимости, когда вы программировали, или для отправки электронного письма с документами сайта, чтобы кто-то мог быть самообслуживаемым вместо того, чтобы не торопиться.
Проблемы с традиционной документацией
Самая большая претензия к традиционной документации заключается в том, что она со временем становится устаревшей. В проекте и кинжале никогда не выделяется время на предоставление или обновление документации, а устаревшие документы могут привести разработчика или команду к ошибочному пути, ведущему к часам или дням дезинформации, ведущей к кроличьим норам.
† Гибкие процессы, процессы SCRUM и Lean должны дать время для обработки технического долга, такого как документация, даже если бы он назывался «необходимым злом». Узнайте больше здесь
Во-вторых, разработчики — это те, кого
принудительно поддерживать документацию, и, как правило, разработчики не очень хороши в отделе написания, и если сегменты процесса документации не автоматизированы, разработчики — это люди, и мы забываем.
просят
Последняя серьезная проблема с традиционной документацией заключается в том, что она, как правило, не автоматизирована и является дополнительным шагом в цикле сборки / выпуска. Любой процесс в цикле сборки, который не автоматизирован и не протестирован, в какой-то момент сломается. Люди хороши в абстрактном мышлении, а не в повторяющихся процессах.
Решение проблем
Как указывалось выше, основными проблемами являются разработчики, ведущие всю документацию и документацию, которая либо построена вне непосредственной среды, либо не автоматизирована. Вот где появляется документация по сайту Maven. Maven был создан с пониманием того, что документация должна быть автоматизирована, и он постепенно улучшался в процессе обновления проекта maven.
Наиболее распространенным случаем документации сайта Maven является развертывание сгенерированной документации на внешний веб-сервер через SCP, FTP, WebDAV или SFTP. Плагин сайта использует библиотеку Apache Wagon для безопасной передачи документов. Большую часть времени документы сайта генерируются на этапах выпуска † или развертывания и генерируются на этапе проверки .
† Релиз не является этапом в Maven, это плагин, но это считается лучшей практикой при публикации версионных артефактов в репозиторий Maven.
Maven 3 против Maven 2
Maven решил изменить способ сбора и генерации отчетов между выпусками Maven 2 и Maven 3. В Maven 2 POM будет иметь раздел с именем «reports <», где будут обрабатываться плагины, которые обрабатывают ReportSet . В Maven 3 теперь есть плагин, который обрабатывает и сортирует наборы отчетов, а не Maven. Плагин называется maven-project-info-reports-plugin и документацию можно найти здесь .
Источники для этой серии постов в блоге
Я предоставил ссылку на полностью функциональный мультимодульный проект maven, который публикует на http://mike-ensor.github.com/multi-module-site-doc-project/index.html и локально на $ {env. HOME} / sitedocs / $ {project.artifactId}.
https://github.com/mike-ensor/multi-module-site-doc-project .
Maven 3 Site Docs
Есть два важных элемента в отношении документации сайта для Maven. Плагины, которые генерируют элементы ReportSet и Site Doc / Descriptors.
Плагины
Плагины являются важной частью процесса документирования и обычно выполняются на протяжении всего жизненного цикла сборки maven, генерируя артефакты для фазы плагина, которая генерирует ReportSet. Хорошим примером будет плагин maven-checkstyle-plugin. Плагин, как правило, связан с фазами ресурсов процесса или пакета, поэтому разработчики знают, что в начале жизненного цикла сборки имело место нарушение контрольного стиля. Плагин генерирует документ checkstyle.xml, который затем используется на фазе сайта плагином maven-project-info-reports-plugin для создания страницы отчета в стиле checkstyle.
Maven Site Plugin
Плагин maven-site-plugin — это основной плагин, который используется для хранения всей документации сайта. Каждый плагин, который создает и / или использует ReportSet, должен быть настроен внутри раздела <reportPlugins>. ПРИМЕЧАНИЕ: это где плагин Wagon установлен как зависимость. Плагин Site будет использовать строку <distributionManagement> <site>, чтобы определить, где будут публиковаться документы сайта (SCM, WebDAV, SFTP и т. Д.).
<plugin> <artifactId>maven-site-plugin</artifactId> <version>${plugin.maven-site.version}</version> <dependencies> <dependency><!-- add support for ssh/scp --> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh</artifactId> <version>${plugin.wagon-ssh.version}</version> </dependency> </dependencies> <configuration> <attach>true</attach> <reportPlugins> <plugin> ... ... Plugins go here .... </plugin> </reportPlugins> <attach>true</attach> </configuration> </plugin>
Плагин Maven Project Info Report
Плагин maven-project-info-report-plugin — это основной плагин, который используется плагином maven-site-plugin, который Maven 3 использует для сопоставления и создания общих документов отчетов о сайте для артефакта.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <configuration> <dependencyDetailsEnabled>false</dependencyDetailsEnabled> <dependencyLocationsEnabled>false</dependencyLocationsEnabled> </configuration> <!-- simpler configuration without reportSets available for usual cases --> <!-- distribution-management, index, dependencies, help, issue-tracking, plugins, cim, license, dependency-management, mailing-list, project-team, dependency-convergence, scm, plugin-management, modules, summary --> <reports> <report>summary</report> <report>dependencies</report> <report>project-team</report> <report>issue-tracking</report> <report>scm</report> <report>cim</report> <report>modules</report> <report>plugins</report> </reports> </plugin>
Кратко рассмотрим типы отчетов, которые автоматически создаются с помощью плагина maven-project-info-reports-plugin. Многие из этих автоматически генерируемых отчетов предоставляют дополнительную информацию поверх избыточной информации, предоставляемой перечисленными ниже плагинами.
Список автоматически предоставляемых отчетов
- распределение, управление
- показатель
- зависимости
- Помогите
- проблема отслеживания
- плагины
- МГК
- лицензия
- зависимость-менеджмент
- список рассылки
- проектная группа
- Зависимость-схождение
- СКМ
- плагин-менеджмент
- модули
- резюме
Общие плагины
Checkstyle — maven-checkstyle-plugin — Обеспечивает статический анализ исходных файлов. — ПРИМЕЧАНИЕ.
Пример отчета о плагине
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <configuration> <skip>${checkstyle.skip}</skip> <configLocation>${checkstyle.configUrl}</configLocation> <failsOnError>false</failsOnError> <enableRulesSummary>true</enableRulesSummary> <includeTestSourceDirectory>true</includeTestSourceDirectory> </configuration> </plugin>
ПРИМЕЧАНИЕ. Рекомендуется указывать флажок для включения / выключения плагина в зависимости от проекта. Кроме того, обратите внимание на failsOnError, это гарантирует, что плагин выдаст артефакт при ошибке и представит его пользователю.
FindBugs — maven-findbugs-plugin — обеспечивает статический анализ исходных файлов — плагин не нужно запускать вне фазы отчета
Пример отчета о плагине
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>findbugs-maven-plugin</artifactId> <configuration> <skip>${findbugs.skip}</skip> <xmlOutput>true</xmlOutput> </configuration> </plugin>
ПРИМЕЧАНИЕ. Рекомендуется указывать флажок для включения / выключения плагина в зависимости от проекта. Кроме того, обратите внимание на failsOnError, это гарантирует, что плагин выдаст артефакт при ошибке и представит его пользователю.
Cobertura — maven-cobertura-plugin — Обеспечивает покрытие кода на этапе модульного тестирования ( теста ). ПРИМЕЧАНИЕ. Должен выполняться во время сборки И во время фаз отчетности.
Пример отчета о плагине
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <configuration> <skip>${cobertura.skip}</skip> </configuration> </plugin>
ПРИМЕЧАНИЕ. Рекомендуется указывать флажок для включения / выключения плагина в зависимости от проекта. Кроме того, обратите внимание на failsOnError, это гарантирует, что плагин выдаст артефакт при ошибке и представит его пользователю.
PMD и CPD — maven-pmd-plugin — обеспечивает статический анализ (PMD) и обнаружение дублирования кода / вырезание-копирование-вставка для артефакта. Узнайте больше о плагине PMD здесь .
Пример отчета о плагине
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <reportSets> <reportSet> <id>integration-tests</id> <reports> <report>report-only</report> <report>failsafe-report-only</report> </reports> </reportSet> </reportSets> </plugin>
JavaDoc — maven-javadoc-plugin — Объединяет JavaDocs в структуру отчетности. ПРИМЕЧАНИЕ: это не нужно запускать во время стандартной сборки, только на этапе создания отчетов.
Пример отчета о плагине
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <skip>${javadocs.skip}</skip> <failOnError>false</failOnError> </configuration> </plugin>
JXR — maven-jx-plugin — Создает информацию о перекрестных ссылках для классов. Checkstyle, PMD, FindBugs, JavaDocs и различные другие плагины могут использовать конфигурацию JXR. ПРИМЕЧАНИЕ: этот плагин должен быть запущен на раннем этапе жизненного цикла Maven (предложить ресурсы процесса) в дополнение к разделу о плагине sitedoc.
Пример отчета о плагине
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jxr-plugin</artifactId> <configuration> <aggregate>true</aggregate> </configuration> </plugin>
Полезные плагины
Другие удобные плагины, которые можно использовать для документации сайта:
- Taglist — ищет в исходном коде конкретные слова, такие как @TODO и FIXME, а затем объединяет их в отчет по проекту — http://mojo.codehaus.org/taglist-maven-plugin/
- Версии — использует центральное и / или локальное зеркало maven для поиска каждой зависимости, свойств проекта и версий плагинов, затем создает отчет, в котором можно обновить как мелкие, так и основные обновления — http://mojo.codehaus.org/versions-maven -plugin /
- Changelog — использует SCM, перечисленный в разделе distributionManagement, чтобы вывести простую историю для каждого файла; выводит список самых измененных файлов, лучших участников и связывает изменения с помощью веб-инструмента SCM, такого как github или web-svn — http://maven.apache.org/plugins/maven-changelog-plugin
- Изменения — интегрируется с Jira, Trac или Bugzilla (или любым changelist.xml, созданным системой управления проблемами) и отображает, какие ошибки были обновлены между текущим и предыдущим выпуском — http://maven.apache.org/plugins/maven. -изменения-плагин /
Конец первой части
Следующая статья будет посвящена части документации для разработчиков; более конкретно, охватывающий XDoc и APT. Документация сайта надежна, и в следующем посте будет показано, как программировать некоторые части документов XDoc, используя шаблоны Velocity.
Последняя часть этого блога будет посвящена многомодульным проектам. Кроме того, в этом посте будет показано, как развернуть документы сайта на страницах Github, чтобы вы могли иметь документы сайта по адресу http: // < имя пользователя > .github.com / < ваш-проект >.