@link в другой пакет внутри package-info.java

Можно ли связать файл package-info.java с другим пакетом за пределами этого пакета (в том же проекте)?

Если я попытаюсь сделать это в java 7, я всегда получаю:

warning - Tag @link: reference not found:

Ответы

Ответ 1

Оба @link и @see поддерживают привязку к пакетам.

У меня есть следующий код в одном из моих файлов package-info.java, а инструмент javadoc создает ссылку:

/**
 * <p>Note, however, that the classes in {@link gov.va.med.srcalc.domain}
 * define the vast majority of the data mapping via JPA annotations.</p>
 */
package gov.va.med.srcalc.db;

Мы используем Gradle как наш инструмент построения, но я обнаружил, что Gradle не создает ссылку и создает предупреждение reference not found: gov.va.med.srcalc.domain. Возможно, это ошибка в Gradle.

Ответ 2

Простая ссылка с @docroot работает для стандартного Java-документа:

/**
 * See the 
 * <a href="{@docRoot}/com/mycorp/package-summary.html#package_description">
 *    package overview
 * </a> for more information.
 */

Не имеет значения, нужно ли вам это в package-info.java или в классе, тег {@link} не может обрабатывать ссылки на пакеты.

Ответ 3

Это скорее обходной путь, но, по крайней мере, если вы ссылаетесь на какой-либо файл в пакете com.foo.Bar, Eclipse позволит вам перейти от Bar в описание package-info.java, наведя курсор на foo затем в Inline Previews и т.д.

Ответ 4

Половина ответа заключается в том, что {@link some.package.name} действительно ссылается на пакет.

Другая половина ответа, как я только что выяснил, - это то, что javadoc нужно вызвать с именами пакетов в командной строке. Ну, это предположение, потому что я фактически использую задачу ant <javadoc/>, но как только я добавляю <packageset/>, предупреждения reference not found исчезли и ссылки, доступные в сгенерированном javadoc.

Ответ 5

вам нужно импортировать использованный пакет, поэтому javadoc знает пространство имен, на которое вы ссылаетесь.

package-info.java должно выглядеть ссылкой:

import package.subpackage.ClassnameYouWantToLink;
/**
* {@link ClassnameYouWantToLink}
*/

если вы не хотите импортировать пакет, вам понадобится полный quallified package-Name infront класса Class:

/**
* {@link package.subpackage.ClassnameYouWantToLink}
*/