2012-02-01 2 views
1

Родитель:отключить BuildNumber-Maven-плагин для подмодулей

<plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>buildnumber-maven-plugin</artifactId> 
      <version>1.0</version> 
      <executions> 
       <execution> 
        **<inherited>false</inherited>** 
        <goals> 
         <goal>create</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <format>${project.version}-b{0,number}</format> 
       <items> 
        <item>buildNumber0</item> 
       </items> 
       <doCheck>false</doCheck> 
       <doUpdate>false</doUpdate> 
      </configuration> 
     </plugin> 
    </plugins> 

<modules> 
    <module>module1</module> 
    <module>module2</module> 
</modules> 

Во время 'МВН BuildNumber: создать' каждого модуля генерации BuildNumber. Можно ли отключить его для подмодулей? Другими словами, во время 'mvn buildnumber: create' номер сборки должен генерироваться только один раз в родительском модуле.

Я попробовал установить <phase>none</phase> и <skip>true</skip> в подмодулях, но без каких-либо изменений.

Предложения?

+0

Для вашего проекта с несколькими модулями вы используете его для создания единого артефакта (например, войны или уха)? Если это так, вы можете просто использовать плагин buildnumber для этого единственного модуля, а не в корне. – Michael

+0

@ Michael Я мог бы, но в любом случае buildnumber плагин выполняется для всех модулей. Что я сделал не так? – Alex

+0

вы не сделали ничего плохого. Вы указали директиву сборки в корневой помпе, которая в многомодульном pom течет вниз. Ваши дочерние модули используют родительский pom как родительский, что означает, что они все делают там. Таким образом, ваш код выполняет именно то, что вы просили. – Michael

ответ

1

Я хотел бы взглянуть на:

<pluginManagement>...</pluginManagement> 

элемент: http://maven.apache.org/pom.html#Plugin_Management

Я имел успех определение моих плагин в моем мастере/родителе/​​файл п корневого через раздел плагина-управление, а затем просто позволяя их поведение в моих дочерних pom-файлах просто указывая комбинацию group/artefact.

В вашем случае, я хотел бы попробовать следующее ...

В корневом pom.xml (обратите внимание на > элемент < pluginManagement):

... 
<build> 
    ... 
    <pluginManagement> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>buildnumber-maven-plugin</artifactId> 
     <version>1.0</version> 
     <executions> 
      <execution> 
       <goals> 
        <goal>create</goal> 
       </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <format>${project.version}-b{0,number}</format> 
      <items> 
       <item>buildNumber0</item> 
      </items> 
      <doCheck>false</doCheck> 
      <doUpdate>false</doUpdate> 
     </configuration> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
... 
</build> 
... 

А потом просто включить поведение ваш module1 (или module2) pom.xml пути (NO <pluginManagement> элемента):

<build> 
    ... 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>buildnumber-maven-plugin</artifactId> 
    <plugin> 
    <plugins> 
    ... 
</build> 
... 

Это было дайте мне знать, если он не работает, дайте мне знать.

0

Обновите ПОМ использовать версию 1.3 плагина, а затем настроить плагин в каждом суб модуль с истинным

+0

было предложено более 2 лет назад, но в любом случае спасибо за помощь! – Alex

1

Это: Execute Maven plugin goal on parent module, but not on children

Вы можете добавить <inherited>false</inherited> конфигурации плагина, чтобы избежать наследования в детских РОМ :

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>buildnumber-maven-plugin</artifactId> 
    <version>1.0</version> 
    <inherited>false</inherited> 
    ... 
    </plugin> 
Смежные вопросы