Maven - запускать плагин один раз для каждого профиля - PullRequest
0 голосов
/ 08 июня 2011

У меня есть один модуль Maven, отвечающий за создание нескольких документов из нескольких других модулей (войн).Все работает нормально -> при сборке я объединяю несколько плагинов, таких как javadoc, wadl, сборка и т. Д., Чтобы выполнить то, что я хочу.Теперь мне кажется, что мне нужно собрать один и тот же документ для нескольких версий (поэтому у нас есть документация как для транковой, так и для более старых версий).Я пытался использовать профили, такие как конфиг ниже.Проблема в том, что даже оба профиля активны, каждый плагин выполняется только один раз (даже если у них разные идентификаторы выполнения).Любая идея, почему и как я могу запустить каждый плагин один раз для каждого профиля?

<dependencies>
  <!-- common dependencies -->
</dependencies>
<properties>
  <!-- ${versionToBuild} is defined by each profile -->
  <output.name>doc-${versionToBuild}</output.name> 
  <!-- other common properties or based on a property defined by profile -->
</properties>
 <build>
    <pluginManagement>
        <plugins>
        <!-- configuration for plugins based on $versionToBuild -->
        </plugins>
    </pluginManagement>
 </build>
 <profiles>
   <profile>
     <id>doc-for-1.1</id>
     <activation>
       <activeByDefault>true</activeByDefault>
     </activation>
     <properties>
       <versionToBuild>1.1-SNAPSHOT</versionToBuild>
     </properties>
     <dependencies>
       <!-- the artefacts of my project in v1.1 -->
     </dependencies>
     <build>
       <plugins>
         <plugin>
           <artifactId>maven-javadoc-plugin</artifactId>
         </plugin>
         <plugin>
           <groupId>com.sun.jersey.contribs</groupId>
           <artifactId>maven-wadl-plugin</artifactId>
         </plugin>
       <plugins>
     </build>
   </profile>
   <profile>
     <id>doc-for-1.2</id>
     <activation>
       <activeByDefault>true</activeByDefault>
     </activation>
     <properties>
       <versionToBuild>1.2-SNAPSHOT</versionToBuild>
     </properties>
     <dependencies>
       <!-- the artefacts of my project in v1.2 -->
     </dependencies>
     <build>
       <plugins>
         <plugin>
           <artifactId>maven-javadoc-plugin</artifactId>
         </plugin>
         <plugin>
           <groupId>com.sun.jersey.contribs</groupId>
           <artifactId>maven-wadl-plugin</artifactId>
         </plugin>
       <plugins>
     </build>
   </profile>
 </profiles> 

1 Ответ

1 голос
/ 08 июня 2011

Я не думаю, что вы можете делать то, что вы хотите, не идя вразрез с тем, как работает Maven.Это хитроумно объединяет перекрывающиеся конфигурации плагинов, такие как ваша.Вы могли бы привязать каждый плагин к разной фазе с его настройками по умолчанию (гарантируя, что они отличаются для v1.1 и v1.2), но это очень хакерски.

Вместо этого я советую иметь отдельные ветвина вашем контроле версий для v1.1 и v1.2, вместо того, чтобы POM был так тесно связан с историей версий.Вы просто создадите документ для каждой версии, проверив соответствующую ветку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...