2016-05-16 8 views
0

У меня есть проект Мультиконтроллеры:Maven-JavaDoc-плагина и фаза

parent 
    |____ module1 
    |____ module2 
    |____ module3 

Я хочу, чтобы генерировать агрегированный Javadoc для всех модулей. Это работает, используя что-то вроде этого в pom.xml parent «s (который имеет POM упаковки и определяет дети модулей):

//... 
<modules> 
    <module>module1</module> 
    <module>module2</module> 
    <module>module3</module> 
</modules> 
//... 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.10.3</version> 
      <executions> 
       <execution> 
        <id>aggregate</id> 
        <goals> 
         <goal>aggregate</goal> 
        </goals> 
        <phase>prepare-package</phase> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

агрегированная Javadoc генерируется правильно, что хорошо работает!

Но проблема в том, что Мне нужно включить сгенерированный агрегированный Javadoc в окончательный module3 .jar! Другими словами, я хочу, чтобы итоговый module3.jar содержал копию сгенерированного агрегированного Javadoc всех модулей!

Вот почему я пытаюсь запустить maven-javadoc-plugin плагин на подготовить ПАКЕТ фазы в проекте parent: Я хотел бы, чтобы Javadoc, чтобы быть сгенерированы перед тем делается упаковка module3, так что я могу включить его (путем копирования, например, с помощью плагина maven-antrun-plugin).

Но, и вот моя проблема, мне кажется, что даже если я использую подготовить пакет- фазы, агрегированный Javadoc еще не генерируется, когда package фазы выполняется для module3 артефакта! Это как если родительский плагин запускается после всех детей плагинов, даже если он объявлен с использованием фазы, которая, как предполагается, запустить перед тем ...

Любая идея о том, как я мог бы генерировать агрегированный Javadoc для всех модулей до фаза packagemodule3, поэтому я могу включить этот Javadoc?

ответ

0

Я желаю кто-то находит лучшее решение, но вот обходной путь я сделал, если это может помочь кому-то в один прекрасный день:

Я не позволить Maven генерировать агрегированный Javadoc сам по себе. Я предотвращаю это, обернув плагин maven-javadoc-plugin в <profile>. Я дал идентификатор «aggregatedJavadoc» для моего.

Затем в pom.xml Module3, я добавил exec-maven-plugin плагин, который, в конечном счете, программно вызывает aggregate цели, в «aggregatedJavadoc» профиль, на родительском модуле, в prepare-package фазе! Затем я копирую полученный Javadoc в папку вывода сборки модуля module3, поэтому он включается в полученный .jar.

Сценарий, который вызывается плагином exec-maven-plugin, является обычным явлением в моем случае, но многие решения могут использоваться для программного вызова целевой цели Maven: Apache Maven Invoker, например.

Смежные вопросы