2012-07-04 4 views
3

Мой вопрос исходит из желания запускать javadoc: aggregate для всех проектов, кроме одного, где я хочу запустить javadoc: javadoc (потому что этот один проект имеет подмодуль, который должен использовать параметр sourcepath в своем maven-javadoc-plugin config, поскольку он сгенерировал код, а также источник).Можно ли определить цель maven с переменной?

И, как я понимаю, есть ошибка, которая означает, что параметр sourcepath игнорируется, если вы запустите совокупную цель. Я пробовал сам, и это не сработало, и я нашел: http://jira.codehaus.org/browse/MJAVADOC-311

У меня есть родительский POM, который определяет плагин конфигурации:

<properties> 
    <javadoc-goal>aggregate</javadoc-goal> 
<properties> 

т.е.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>generate-javadoc</id> 
     <phase>package</phase> 
     <goals> 
     <goal>${javadoc-goal}</goal> 
     </goals> 
     <configuration> 
     ... 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

Тогда у меня есть несколько проектов, которые наследовать от этого проекта. Один, где мне нужно запустить Javadoc вместо агрегата будет определить:

<javadoc-goal>javadoc</javadoc-goal> 

и его подмодуль будет определять его SourcePath:

<reporting> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <configuration> 
      <sourcepath>${basedir}/src/main/java:${basedir}/src/generated/java</sourcepath> 
     </configuration> 

     ... 
    </plugin> 
    </plugins> 
</reporting> 

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

[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] '${javadoc-goal}' was specified in an execution, but not found in the plugin 

Если я не могу сделать это любые идеи для решения этой проблемы?

+0

Хорошо, поэтому я решил это, определив все, кроме цели плагина, в родительском POM, а затем определил соответствующую цель (javadoc или aggregate) в проекте POM. Должен ли я удалить этот вопрос, поскольку он больше не требует ответа? –

+0

Идите дальше и ответьте на свой вопрос; он [рекомендуется] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/). – user944849

ответ

0

Это решение, которое я придумал:

Настройте плагин JavaDoc в родительском ПОМ, но не обеспечивают цели:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>generate-javadoc</id> 
     <phase>package</phase> 
     <configuration> 
     ... 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

В в каждом проекте POM обеспечить цели:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>generate-javadoc</id> 
     <phase>package</phase> 
     <goals> 
     <goal>javadoc</goal> <!-- or aggregate for those projects that require it --> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 
Смежные вопросы