Перекрестное связывание документа Java между отдельными проектами - PullRequest
2 голосов
/ 08 декабря 2011

У меня проблемы с получением Javadoc для ссылки на API другого проекта.

Существует строгая иерархия между проектами («общий» проект, на который ссылается проект «приложение»). Оба проекта собраны просто отлично, поэтому нет никаких проблем с классами и пакетами, которые на самом деле не существуют.

Насколько я понимаю, javadoc не имеет своего рода buildpath так же, как Java, но вместо этого использует ссылки на другие веб-сайты javadoc. Для этого есть несколько вполне логичных причин, по которым можно генерировать перекрестные ссылки HTML.

Моя попытка сделать это выглядит следующим образом:

  1. Я собрал javadoc для общего проекта
  2. Я бросил это на веб-сервер в моей внутренней сети
  3. Я добавил ссылку на API (в моей интрасети) на задачу Ant Javadoc в проекте приложения.
  4. Я попытался построить проект приложения

Javadoc по-прежнему выплевывает сообщения об ошибках вида:

[javadoc] C:\Users\couling\workspace\app\src\com\blahblah\app\AppMain.java:14: package com.blahblah.common.foo does not exist
[javadoc] import com.blahblah.common.foo.Bar
[javadoc]                               ^

Полученный Javadoc не имеет перекрестных ссылок между проектами.

Задачи муравья для двух проектов:

Общие:

<javadoc 
         access="protected" 
         author="true" 
         classpath="." 
         destdir="out/doc/docs" 
         nodeprecated="false"
         nodeprecatedlist="false" 
         noindex="false" 
         nonavbar="false" 
         notree="false"
         packagenames="*"
         source="1.6" 
         sourcepath="src" 
         splitindex="true" 
         use="true" 
         version="true">
             <link href="http://download.oracle.com/javase/6/docs/api/" />
</javadoc>

App:

<javadoc 
         access="protected" 
         author="true" 
         classpath="." 
         destdir="out/doc/docs" 
         nodeprecated="false"
         nodeprecatedlist="false" 
         noindex="false" 
         nonavbar="false" 
         notree="false"
         packagenames="com.blahblah.app.*"
         source="1.6" 
         sourcepath="src" 
         splitindex="true" 
         use="true" 
         version="true">
             <link href="http://intranet.blahblah.com/api/common/docs/" />
             <link href="http://download.oracle.com/javase/6/docs/api/" />
</javadoc>

Есть какие-нибудь мысли о том, что мне нужно сделать, чтобы приложение использовалось в качестве ссылки?

1 Ответ

1 голос
/ 10 декабря 2011

Элемент <link> (или опция -link для командной строки javadoc) помогает только при генерации ссылок - но Javadoc останавливается на более ранней стадии, он не может действительно работать с классами вашего приложения, если они ссылаются на unknown ( общие) классы.

В этом отношении Javadoc работает точно так же, как Javac - вы должны как-то указать на используемые классы, то есть они должны быть в пути классов. Вы можете использовать элемент <classpath>, чтобы указать на файл jar или каталог класса, или элемент <sourcepath>, чтобы указать на источники (сделайте это, если вам нужно унаследовать некоторые комментарии от них).

Это не нужно для ссылки на стандартный API, так как он уже включен в компилятор.

Обратите внимание, что для такого соединения требуется, чтобы Javadoc загрузил package-list с этого URL - вместо этого вы можете указать на локальный каталог, содержащий этот файл списка пакетов.

...