Подтвердить что ты не робот

Создать javadoc только с JRE

Я хотел бы иметь возможность генерировать javadoc для моих проектов maven даже при работе в JRE вместо JDK, где найдена команда javadoc, вызывается maven. Другими словами, не полагаясь ни на что, кроме того, что находится в JRE, и что Maven может загружать и использовать в качестве артефактов.

Есть ли какой-либо простой способ генерировать javadocs вообще с Maven без необходимости использовать код, найденный только в JDK?


EDIT: По-видимому, важно понять, почему я хочу это сделать. Мы - небольшая команда в более крупной организации с ежегодными выпусками нашего пакета продуктов, которые наши клиенты затем обновляют, когда это удобно для них (из-за огромного масштаба развертываний это дорого и требует времени, поэтому обычно пропускать один или несколько выпусков), и мы зарабатываем на жизнь, чтобы в кратчайшие сроки предоставлять исправления и новые функции для существующих развертываний в любой версии, на которой работает данный клиент. В качестве примера я недавно сделал исправление для компонента, который я написал пять лет назад, который в значительной степени был не тронут.

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

С недавним выражением о том, что будущие версии javac не будут поддерживать старые цели (http://openjdk.java.net/jeps/182), мы пришли к выводу, что наша долгосрочная цель - чтобы минимизировать наши зависимости от базовой среды Java, предпочтительно до простой JRE. Мы находимся в процессе полной замены javac из JDK компилятором Eclipse, который доступен от Maven Central, и теперь мы смотрим на генерацию javadoc.

4b9b3361

Ответ 1

Получить источник JavaDoc из OpenJDK и создать свой собственный JAR из него со всеми соответствующими классами JavaDoc. Напишите плагин maven, который опирается на ваш JAR, и вызовите com.sun.tools.javadoc.Main.main из него.

Не похоже на вам нужно открыть свои источники при использовании классов OpenJDK, вы должны быть в порядке, чтобы распространять результирующий подключаемый модуль без жестких ограничений.

Даже если условия не охватывают инструменты, вы можете написать плагин Open Source GPL-2 для maven и сделать его отдельным продуктом, который вы распространяете под GPL-2. Затем ваш продукт будет загружать и устанавливать плагин с помощью maven plugin:download, тем самым отделяя ваш плагин JavaDoc от остальной части вашего кода.

Конечно, вы должны выполнить это предложение своим юридическим отделом, прежде чем следовать этому совету.

Ответ 2

Ответ 3

Вы можете использовать продукт под названием Doxygen. Это, как правило, используется для создания документации для C++ или других языков, которые не имеют javadoc продукт встроенные.

Вы можете настроить doxygen для чтения аннотаций javadoc и вывода продукта, аналогичного javadoc.

Ответ 4

Команда, которая генерирует java-документы, на самом деле называется javadoc, и она доступна только с JDK.

Ответ 5

Из Javadoc FAQ:

String[] javadocargs = { "-d", "docs",
                         "-sourcepath", "/home/user/src",
                         "java.applet" };
com.sun.tools.javadoc.Main.main(javadocargs);

tools.jar должен находиться в вашем пути к классам.

Ответ 6

Мы предлагаем инструмент под названием DocFlex/Javadoc, который уже упоминается здесь от Glen Best (хотя немного некорректно).

Но прежде чем углубиться в это, я хотел бы дать некоторое введение, в чем все это.

В принципе, Javadoc (предоставляемый JDK) является вызывающим из двух вещей:

  • Парсер Java
  • Доклет

Javadoc начинает с вызова парсера Java для сбора информации о источниках Java, из которой он строит структуру DOM, представленную в форме API Doclet. Затем он вызывает доклет. Это подключаемый модуль Javadoc, который использует Doclet API в качестве источника данных для генерации им любого вида вывода.

То, что вы видите как стандартный JavaDoc, генерируется Standard Doclet. Итак, вы можете себе представить, что doclet является самой большой частью всей реализации Javadoc.

Теперь о нашем DocFlex/Javadoc. По сути, это инструмент для быстрого развития специальных доклетов, который использует наша гораздо более общая технология для генераторов документации, основанных на шаблонах. (На самом деле, наше внимание скорее отдалено от материала Javadoc, поэтому это скорее побочный продукт самого главного).

В нашей интерпретации сами доклеты (как генераторы документации) программируются в виде специальных наборов шаблонов. Эти шаблоны более схожи с сценариями XSLT, но концептуально (мы не используем XSLT где-то в фоновом режиме). DOM-подобная организация API Doclet позволила нам использовать общий подход XSLT/XPath к нашей технологии. Итак, каждый doclet состоит из двух вещей:

  • Матричный интерпретатор
  • Набор шаблонов

Здесь набор шаблонов является взаимозаменяемой частью (которая на самом деле является центром нашего инструмента).

В настоящее время мы предоставляем готовый к использованию шаблон JavadocPro, который генерирует вывод HTML эквивалентно стандартным JavaDocs (с некоторыми важными дополнительными функциями, недоступными в стандартном Doclet). Здесь вы можете увидеть demo JavaDoc, сгенерированный с ним:

enter image description here

Весь DocFlex/Javadoc является коммерческим продуктом. Но мы также предоставляем светлую версию, называемую DocFlex/Doclet, которая бесплатна. Он включает только интерпретатор шаблонов и некоторые готовые наборы шаблонов (включая JavadocPro). Таким образом, вы можете использовать его для генерации JavaDoc, очень похожего на стандартное (в HTML), а также на документацию RTF.


Теперь о главном вопросе. Можно ли использовать наш инструмент без JDK?

Нет. Поскольку, будучи плагином Javadoc (частью doclet нашего инструмента), ему все еще нужен Javadoc.

С другой стороны, то, чего не хватает, чтобы сделать его полностью независимым от JDK, является парсер Java, и нам не нужен полноценный Java-парсер, потому что мы не генерируем исполняемый код. Нам нужно что-то легкое, способное построить такую ​​структуру, как Doclet API.

Если бы мы знали, что может требовать такая вещь, мы могли бы рассмотреть ее. Другие вопросы? Сообщите нам по электронной почте (наш сайт)!