@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}
*/