Опция -link
в команде javadoc в java 10 не работает для меня согласованно с модулями.
В частности, она не работает, когда имя зависимого модуля совпадает с именем модуля.имя экспортируемого пакета
Я запускаю следующую команду
/opt/jdk-10.0.1/bin/javadoc -html5
-subpackages uk.co.sr.vcher.service \
--source-path src/service \
--module-path lib:app -d javadoc/service \
-link ../auth -link ../db -link ../models \
-link ../core -link ../render \
-link https://docs.oracle.com/javase/10/docs/api \
-linksource src/service/uk/co/sr/vcher/service/Service.java \
src/service/uk/co/sr/vcher/service/ServiceImpl.java \
src/service/module-info.java
Так что генерируется javadoc для двух классов в пакете uk.co.sr.vcher.service
, которые находятся в каталоге src / serviceи связывание документов с 5 другими модулями в моем приложении, а также с jdk docs
jar-модуль, который я построил, находится в приложении /, внешние зависимости находятся в lib /
Javadoc успешно генерируетHTML.Но ссылки на классы в некоторых (не во всех) других модулях моего приложения не работают, отсутствуют каталоги путей пакета.
То, что я показываю ниже, является частью вывода HTML для одного конструктораuk.co.sr.vcher.service.ServiceImpl
.Он принимает четыре параметра: File
, ConnectionSource
, Coder
и ApplicationConfig
. Я удалил ссылку, прикрепленную к ServiceImpl
, и добавил несколько пробелов длячитаемость.Это ссылки, связанные с четырьмя типами параметров, которые меня интересуют.
, File
- это java.io.File
и правильно ссылается на docs.oracle.com
, ConnectionSource
- этоuk.co.sr.vcher.db.ConnectionSource
и в то время как во всплывающей подсказке отображается пакет правильно, а ссылка ведет на javadoc для нужного модуля uk.co.sr.db
, ссылка неправильная, так как она не включает путь пакета
Coder
равно uk.co.sr.vcher.Coder
из модуля uk.co.sr.vcher.core
.В этом случае ссылка верна: core/uk/co/sr/vcher/Coder.html
ApplicationConfig
, как и Coder
, из пакета uk.co.sr.vcher
в модуле uk.co.sr.vcher.core
, и ссылка верна.
Во всем моем проекте ссылки на два модуля правильные, но все остальные модули нарушаются из-за отсутствия пути к пакету.
Я создал Javadoc для каждого из моих модулей таким же образом.Они содержат файлы списка элементов в своей базе, а не файлы списка пакетов.Модуль uk.co.sr.vcher.service
зависит от модулей uk.co.sr.vcher.db
и uk.co.sr.vcher.core
.
Насколько я вижу, разница между модулями, с которыми я могу успешно связать, и теми, которые я не могучто «хорошие» не в подпакетах чего-либо еще.т.е. модуль uk.co.sr.vcher.db
содержит пакет uk.co.sr.vcher.db
, который является подпакетом пакета uk.co.sr.vcher
, который содержится в модуле uk.co.sr.vcher.core
.Но это не должно ничего ломать.
<span class="memberNameLink">
ServiceImpl</span>(
<a href="https://docs.oracle.com/javase/10/docs/api/java/io/File.html?is-
external=true"
title="class or interface in java.io"
class="externalLink">File</a> workDirectory,
<a href="../../../../../../db/ConnectionSource.html?is-
external=true"
title="class or interface in uk.co.sr.vcher.db"
class="externalLink">ConnectionSource</a> db,
<a href="../../../../../../core/uk/co/sr/vcher/Coder.html?is-
external=true"
title="class or interface in uk.co.sr.vcher"
class="externalLink">Coder</a> coder,
<a href="../../../../../../core/uk/co/sr/vcher/ApplicationConfig.html?is-
external=true"
title="class or interface in uk.co.sr.vcher"
class="externalLink">ApplicationConfig</a> config)
Обновление : я поставил минимальный пример проекта - три класса Java, три модуля - который показывает ту же проблемув https://github.com/andrewmcguinness/javadoc_issue
Обновление 2 : я определил причину, чтобы имя пакета uk.co.sr.vcher.db
совпадало с именем модуля uk.co.sr.vcher.db
.Изменение имени модуля на uk.co.sr.vcher.pdb
исправляет это.Я все еще хочу знать, если это ошибка JDK или я делаю что-то не так.