Package jdk.javadoc.doclet
Стандартный Doclet standard doclet можно использовать для создания документации в формате HTML. Он поддерживает пользовательские taglets, которые можно использовать для создания настраиваемого вывода для пользовательских тегов в комментариях документации.
Примечание: Объявления в этом пакете заменяют объявления из старого пакета com.sun.javadoc. Сведения о соответствии старых типов новым см. в руководстве по миграции.
Doclet вызываются командой javadoc, и этот API можно использовать для записи информации о программе в файлы. Например, по умолчанию вызывается стандартный Doclet для создания документации в формате HTML.
Вызов определяется интерфейсом Doclet -- метод интерфейса run задает точку входа.
public boolean run(DocletEnvironment environment)
DocletEnvironment содержит среду, с которой будет инициализирован Doclet. Из этой среды можно извлечь все остальные сведения в виде объектов elements. Для запросов к элементам и типам можно также использовать API и утилиты, описанные в Language Model API.
Терминология
- Выбранный
- Элемент считается выбранным, если параметры выбора позволяют документировать его. (Обратите внимание: синтетические элементы никогда не выбираются.)
- Заданный
- Множество элементов, заданных пользователем, считается заданными элементами. Заданные элементы служат отправными точками для определения включенных элементов, подлежащих документированию.
- Включенный
- Элемент считается включенным, если он выбран и выполняется любое из следующих условий:
- элемент задан; или
- элемент содержит заданный элемент; или
- элемент заключен в заданный элемент.
Параметры
Параметры выбора Javadoc можно задать с помощью следующих параметров:-
--show-members:valueи--show-types:valueможно использовать для фильтрации членов, указав одно из следующих значений:- public -- учитываются только общедоступные элементы
- protected -- учитываются общедоступные и защищенные элементы
- package -- учитываются общедоступные, защищенные и элементы с доступом в пределах пакета
- private -- учитываются все элементы
-
--show-packages:valueсо значением "exported" или "all" позволяет учитывать только экспортируемые пакеты или все пакеты в модуле. -
--show-module-contents:valueпозволяет задать уровень детализации документации объявлений модулей. Значение "api" указывает на документацию уровня API, а "all" — на подробную документацию.
-
--moduleдокументирует заданные модули. -
--expand-requires:valueрасширяет набор документируемых модулей, включая некоторые или все зависимости модулей. Значение может быть одним из следующих:- transitive -- каждый модуль, явно указанный в командной строке, расширяется за счет включения замыкания его транзитивных зависимостей
- all -- каждый модуль, явно указанный в командной строке, расширяется за счет включения замыкания его транзитивных зависимостей, а также всех его непосредственных зависимостей
-
packagenamesпозволяет задать пакеты. -
-subpackagesпозволяет рекурсивно загружать пакеты. -
-excludeпозволяет исключить каталоги пакетов. -
sourcefilenamesпозволяет задать имена исходных файлов.
Взаимодействие со старыми параметрами.
Новые параметры--show-* представляют собой более подробную замену старых параметров -public, -protected, -package, -private. Кроме того, старые параметры можно продолжать использовать как сокращенные формы комбинаций новых параметров, как описано ниже: | Старый параметр | Эквивалентные значения нового параметра | ||||
|---|---|---|---|---|---|
--show-members |
--show-types |
--show-packages |
--show-module-contents |
||
-public |
public | public | exported | api | |
-protected |
protected | protected | exported | api | |
-package |
package | package | all | all | |
-private |
private | private | all | all | |
Полное имя элемента — это имя, перед которым указано имя пакета, например java.lang.String. Неполное имя не содержит имени пакета, например String.
Пример
Ниже приведен пример Doclet, который отображает сведения о классе и его членах и поддерживает параметр.import com.sun.source.doctree.DocCommentTree;
import com.sun.source.util.DocTrees;
import jdk.javadoc.doclet.Doclet;
import jdk.javadoc.doclet.DocletEnvironment;
import jdk.javadoc.doclet.Reporter;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.ElementFilter;
import javax.tools.Diagnostic.Kind;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Locale;
import java.util.Set;
public class Example implements Doclet {
private Reporter reporter;
private PrintWriter stdout;
private String overviewFile;
@Override
public void init(Locale locale, Reporter reporter) {
reporter.print(Kind.NOTE, "Doclet using locale: " + locale);
this.reporter = reporter;
stdout = reporter.getStandardWriter();
}
@Override
public String getName() {
return "Example";
}
@Override
public Set<? extends Option> getSupportedOptions() {
Option[] options = {
new Option() {
private final List<String> someOption = List.of(
"--overview-file",
"-overviewfile",
"-o"
);
@Override
public int getArgumentCount() {
return 1;
}
@Override
public String getDescription() {
return "an option with aliases";
}
@Override
public Option.Kind getKind() {
return Option.Kind.STANDARD;
}
@Override
public List<String> getNames() {
return someOption;
}
@Override
public String getParameters() {
return "file";
}
@Override
public boolean process(String opt, List<String> arguments) {
overviewFile = arguments.get(0);
return true;
}
}
};
return Set.of(options);
}
@Override
public SourceVersion getSupportedSourceVersion() {
// support the latest release
return SourceVersion.latest();
}
@Override
public boolean run(DocletEnvironment docEnv) {
reporter.print(Kind.NOTE, "overviewFile: " + overviewFile);
// get the DocTrees utility class to access document comments
DocTrees docTrees = docEnv.getDocTrees();
// location of an element in the same directory as overview.html
try {
Element e = ElementFilter.typesIn(docEnv.getSpecifiedElements()).iterator().next();
DocCommentTree docCommentTree
= docTrees.getDocCommentTree(e, overviewFile);
if (docCommentTree != null) {
stdout.println("Overview html: " + docCommentTree.getFullBody());
}
} catch (IOException missing) {
reporter.print(Kind.ERROR, "No overview.html found.");
}
for (TypeElement t : ElementFilter.typesIn(docEnv.getIncludedElements())) {
stdout.println(t.getKind() + ":" + t);
for (Element e : t.getEnclosedElements()) {
printElement(docTrees, e);
}
}
return true;
}
private void printElement(DocTrees trees, Element e) {
DocCommentTree docCommentTree = trees.getDocCommentTree(e);
if (docCommentTree != null) {
stdout.println("Element (" + e.getKind() + ": "
+ e + ") has the following comments:");
stdout.println("Entire body: " + docCommentTree.getFullBody());
stdout.println("Block tags: " + docCommentTree.getBlockTags());
}
}
}
Этот Doclet можно вызвать из командной строки, например:
javadoc -docletpath doclet-classes \
-doclet Example \
--overview-file overview.html \
--source-path source-location \
source-location/Example.java
Руководство по миграции
Многие типы из старого API com.sun.javadoc не имеют эквивалентов в этом пакете. Вместо них используются типы из API javax.lang.model и com.sun.source.
В следующей таблице приведено соответствие старых типов и их замен. В некоторых случаях прямого эквивалента нет.
- С версии:
- 9
- См. также:
| Класс | Описание |
|---|---|
| Doclet | Пользовательский Doclet должен реализовывать этот интерфейс, как описано в описании пакета. |
| Doclet.Option | Инкапсуляция имени параметра, псевдонимов, параметров и описаний, используемых Doclet. |
| Doclet.Option.Kind | Вид параметра. |
| DocletEnvironment | Представляет рабочую среду отдельного вызова Doclet. |
| DocletEnvironment.ModuleMode | Режим, задающий уровень детализации документации модуля. |
| Reporter | Интерфейс для вывода диагностических и других сообщений. |
| StandardDoclet | Этот Doclet создает документацию в формате HTML для указанных модулей, пакетов и типов. |
| Taglet | Интерфейс пользовательского Taglet, поддерживаемого такими Doclet, как стандартный Doclet. |
| Taglet.Location | Вид места, в котором можно использовать тег. |
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.