Как правильно использовать javadoc:aggregate в многомодульном проекте maven?

Это мой родительский pom.xml файл (его часть) в многомодульном проекте:

...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
        </plugin>
    </plugins>
</build>
...

Этот плагин наследуется во всех подмодулях, и я не думаю, что это правильный подход. Когда я запускаю mvn javadoc:aggregate, документация создается в target/site/apidoc, но журнал полон предупреждений:

...
[WARNING] Removing: aggregate from forked lifecycle, 
to prevent recursive invocation.
...

Что я делаю неправильно?


person yegor256    schedule 04.08.2010    source источник


Ответы (1)


Вам нужно включить агрегацию для этого плагина:

  <plugin>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
      <aggregate>true</aggregate> <!-- this enables aggretation -->
    </configuration>
  </plugin>

В командной строке введите:

mvn javadoc:aggregate

Редактировать:

Хорошо, я немного покопался в jira плагина maven и обнаружил, что все моджо плагина javadoc были аннотированы с помощью @aggregator. Но, похоже, есть проблемы с агрегатором maven, проблема для которых была зарегистрирована здесь

Также есть связанные ошибки здесь и здесь и еще несколько

Кажется, это проблема блокировщика с агрегатором maven, поскольку некоторые плагины, такие как, например. клевер не бежит.

Подводя итог, вы не делаете ничего плохого

Просто вернитесь к более ранним версиям maven-javadoc-plugin, которые не используют аннотацию @aggregator mojo, и вы не получите предупреждений (если только вы не используете определенную функцию плагина javadoc, которая недоступна в более ранней версии)

Кстати, если вы запускаете плагин javadoc как отчет, @aggregator игнорируется.

person naikus    schedule 04.08.2010
comment
aggregate параметр конфигурации устарел: maven.apache.org/ плагины/maven-javadoc-плагин/ - person yegor256; 04.08.2010
comment
@FaZend вы не указали версию плагина javadoc, а также версию maven. Он устарел в версии 2.5. Во всяком случае, я не знал об этом факте - person naikus; 04.08.2010
comment
Я думаю, что проблема не в этом конкретном плагине, а в моей организации многомодульного проекта. Агрегирующий плагин наследуется подмодулями, и именно здесь сообщается предупреждение. Я думаю, что мне нужно реорганизовать мой корневой проект, но я не знаю, как это сделать. Кстати, я перешел на версию 2.4 с тем же результатом - у меня все еще есть предупреждения, но с другими плагинами (checkstyle, pmd и т.д.). Проблема где-то в механизме агрегации внутри javadoc. - person yegor256; 04.08.2010
comment
@FaZend.com Судя по ссылкам на вопросы (уже в ответе), проблема заключается в том, что моджо аннотируется аннотацией @aggregate. IMO в плагине javadoc нет специального механизма агрегации. Это также вызвано для различных других плагинов, таких как плагин клевера. Агрегатор maven вызывает проблемы с разветвленными жизненными циклами. Есть ли что-то из этого в вашем проекте? Похоже, он работает нормально без каких-либо разветвленных жизненных циклов. - person naikus; 04.08.2010