Как получить значение {@docroot} в теге com.sun.javadoc.Taglet?
Я пишу пользовательский тег для включения файла mathML в HTML-файл Javadoc. Я хотел бы хранить все мои *.mml файлы в одной папке, возможно, в
{@docroot}/doc-files
папка. Мой вопрос: как я могу узнать значение строки @docRoot в объекте Taglet (более конкретно, в пределах toString(com.sun.javadoc.Tag tag)
метод? Большое спасибо!
2 ответа
Мне также нужно было отобразить MathML в моем Javadoc. Я написал сообщение в блоге о том, как я решил это здесь: http://chadretz.wordpress.com/2010/12/19/mathml-inside-javadoc-using-mathjax-and-a-custom-taglet/
Если говорить более конкретно о вашей проблеме, то, если вы посмотрите на исходный код Taglet, который я разместил там (по умолчанию свернут), вы можете увидеть, где я получаю ClassDoc верхнего уровня Tag.holder(), чтобы получить глубину каталога, на которой я нахожусь, поэтому Я могу пройти. Это помогает, если вам нужен относительный корень HTML. Если вам нужно знать местоположение ваших MML во время работы Taglet, я предлагаю вам поместить их в путь к классам и получить к ним доступ как к ресурсам.
Начиная с getPackageDoc
Функция из блога @ChadRetz, я создал вспомогательный класс, который содержит функцию, которая делает то, что вы хотите: com.sun.javadoc.Tag
, он возвращает относительный URL-адрес из прилагаемого файла (файла, содержащего этот тег) в корневой каталог JavaDoc - это эквивалент {@docRoot}
,
Класс называется ComSunJavaDocUtil
и имя функции getRelativeUrlToDocRoot
,
Пример тэглета toString()
функция:
public String toString(Tag tag) {
return "Relative url to DOC ROOT for this tag's enclosing file is \"" +
ComSunJavaDocUtil.getRelativeUrlToDocRoot(tag) + "\"";
}
Этот служебный класс является частью Codelet. Инструкции по установке здесь. Если этот служебный класс - это все, что вы собираетесь использовать, то единственные jar-файлы, которые вам нужны в вашем classpath: codelet
а также xbnjava
... и, конечно же, com.sun.javadoc
,