Как я заставляю javadoc наследование работать на внешние API? (с Maven2)

Когда класс переопределяет конкретный метод или реализации и абстрактный метод, Javadoc автоматически наследован, если явно не перезаписано.

Или, по крайней мере, инструмент пытается сделать это. Кажется, что это не работает на связанные внешние API. Например, когда я в моей реализации кода java.util.Map, или что-то еще от JRE, javadocs не наследуются/копируются от JRE javadocs/apidocs.

В моем конкретном случае я пытаюсь настроить это в плагине Maven2 Javadoc, но это - то же, когда я выполняю javadoc инструмент CLI непосредственно.

Моя конфигурация плагина Maven2 Javadoc в настоящее время похожа на это:

<reporting>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.7</version>
      <configuration>
        <stylesheet>maven</stylesheet>
        <links>
          <link>http://download.oracle.com/javase/6/docs/api</link>
        </links>
      </configuration>
    </plugin>
  </plugins>
</reporting>

Какие-либо указатели о том, как сделать эту работу?

7
задан Chris Vest 4 August 2010 в 00:00
поделиться

2 ответа

Как упоминал @Stephen, исходный файл для унаследованного метода должен быть доступен и должен находиться по пути, указанному в -sourcepath . Это объясняется в документации инструмента Javadoc:

Автоматическое копирование комментариев к методам

Инструмент Javadoc имеет возможность копировать или "наследовать" комментарии метода в классы и интерфейсы под следующие два обстоятельства. Конструкторы, поля и вложенные классы не наследуют комментарии к документам.

  • Автоматически наследовать комментарий для заполнения отсутствующего текста - Когда основной описание или @return , @param или @throws тег отсутствует из комментария к методу Javadoc инструмент копирует соответствующий основной описание или комментарий тега из метод, который он переопределяет или реализует (если любой) по алгоритму ниже.

    В частности, когда тег @param для определенного параметр отсутствует, тогда комментарий для этого параметра копируется из метод дальше по наследству иерархия. Когда тег @throws для конкретное исключение отсутствует, Тег @throws копируется только в том случае, если объявляется исключение.

    Такое поведение отличается от версии 1.3 и более ранних, где наличие какого-либо основного описания или тег предотвратит все комментарии от наследуется.

  • Явное наследование комментария с тегом {@ inheritDoc} - Вставьте встроенный тег {@ inheritDoc} в основное описание метода или @return , @param или @throws комментарий к тегу - соответствующий унаследованный основной описание или комментарий тега копируется в это место.

Исходный файл для унаследованного метод должен быть только на пути указывается -sourcepath для комментарий документа на самом деле доступно для копирования. Ни класс и его пакет не нужно передавать в в командной строке. Это контрастирует с 1.3.x и более ранними версиями, где класс должен быть задокументирован class

Таким образом, вам придется использовать необязательный параметр конфигурации подключаемого модуля javadoc (который по умолчанию содержит исходные коды проекта).


Кстати, - это что-то еще, используются для добавления перекрестных ссылок на внешние проекты. И на самом деле их не следует использовать для JDK. Из Настройка ссылок :

Начиная с версии 2.6, будет добавлена ​​ссылка Javadoc API, в зависимости от версии JDK, используемой вашим проектом. Версия Javadoc API определяется по значению параметра в org.apache.maven.plugins: maven-compiler-plugin (определено в $ {project.build.plugins} или в $ {project.build.pluginManagement} ), или вычисляется с помощью исполняемого файла Javadoc Tool.Если вы хотите пропустить эту ссылку, вам необходимо настроить на false .

Примечание: , если вы используете неподдерживаемый JDK, например 7.0, вы можете добавить его URL-адрес Javadoc API, используя параметр , то есть :

 
 
 <свойство>
  api_1.7 
  http://download.java.net/jdk7/docs/api/ 
 
 
 ...

Дополнительные сведения см. В параметре .

Если вы настроили уровень 1.6 источника в подключаемом модуле компилятора, перекрестные ссылки на Java API просто работают (ссылки указывают на http://download.oracle.com/javase/6 / docs / api / ) для Java API добавить нечего.


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

Странно. Вы действительно указали уровень компилятора источника , как описано в документации? На всякий случай вот что у меня работает:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.6</source>
      <target>1.6</target>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.7</version>
    <configuration>
      <!-- No need for this -->
      <!--
      <javaApiLinks>
        <property>
          <name>api_1.6</name>
          <value>http://download.oracle.com/javase/6/docs/api/</value>
        </property>
      </javaApiLinks>
      -->
      <links>
        <link>http://commons.apache.org/dbcp/apidocs/</link>
        <link>http://commons.apache.org/fileupload/apidocs/</link>
      </links>
    </configuration>
  </plugin>
6
ответ дан 7 December 2019 в 07:38
поделиться

Я не могу дать вам окончательного ответа, но я думаю, что недостающий элемент в головоломке состоит в том, что утилита javadoc должна иметь возможность найти источник код соответствующих внешних API для работы наследования javadoc.

1
ответ дан 7 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: