2010-11-10 15 views
10

Próbuję zmniejszyć kopiowanie/wklejanie w naszych plikach maven pom.maven2: jak udostępnić konfigurację wtyczki między rodzicem a dziećmi pom?

Mamy jeden master pom i wiele projektów dla dzieci pom dziedziczących od mistrza.

chcę podzielić się kompleksową definicję wtyczki patrząc jak:

<plugins> 
    ... 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>appassembler-maven-plugin</artifactId> 
     <configuration> 
      <!-- many xml lines here --> 
     </configuration> 

     <executions> 
      <execution> 
       <phase>package</phase> 
       <goals> 
        <goal>assemble</goal> 
        <goal>generate-daemons</goal> 
        <goal>create-repository</goal> 
       </goals> 
      </execution> 
     </executions> 

     <dependencies> 
      <dependency> 
       <groupId>org.codehaus.mojo.appassembler</groupId> 
       <artifactId>appassembler-booter</artifactId> 
       <version>1.0</version> 
      </dependency> 
     </dependencies> 
    </plugin> 
    ... 
</plugins> 

Kiedy definicja ta wtyczka jest w pom projektu opakowanie jest dobrze zrobione.
Po przeniesieniu definicji do nadrzędnej pom (w lub w), opakowanie jeszcze się nie rozpoczyna.

Czy można udostępnić konfigurację wtyczki? W jaki sposób ?

- Edycja po pierwszych odpowiedziach ---
Próbowałem następujące:
- położyłem XL wtyczki pakowanie config w elemencie mojego macierzystego pom
- dodać to linie w moim pom projektu w elemencie :

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

ale to nie działa ... Co może być złego?

- ostatnia edycja - myślę, że to, czego był problem:
deklaracja ponowne użycie wtyczki powinny być zadeklarowane w budowie profilu.
Zrobiłem to w zawsze włączonej wtyczce i teraz działa dobrze.

Wielkie dzięki.

Odpowiedz

13

Można zawinąć wtyczki rodzica w znaczniku <pluginManagement>.

<build> 
     <pluginManagement> 
      <plugins> 
       <plugin> ... </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 

Wtyczki dla dzieci dziedziczą konfiguracje po zadeklarowaniu wtyczki w znaczniku budowania.

+0

Próbowałem tego, ale to nie działa. Zaktualizowałem moje pytanie dotyczące Twojej odpowiedzi. – Guillaume

+0

Uruchom pomoc: effective-pom i zobacz, jak wygląda konfiguracja wtyczki. Zdecydowanie używasz wtyczki? –

+0

kompilacja przy użyciu wtyczki została zadeklarowana w profilu. Tak więc konfiguracja wtyczki powinna być również zadeklarowana w profilu ... Dzięki za pomoc. – Guillaume

2

Czy próbowałeś już korzystać z funkcji Maven w wersji plugin management? To będzie pozwalają przesunąć te informacje konfiguracyjne do plików dziecięcych pom.xml od pom.xml dominującej:

<build> 
     <pluginManagement> 
      <plugins> 
       <plugin>your_plugin</plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 

Teraz nie wszystkie wtyczki są tak dobrze zrobione jak te z org.apache.maven Grupa .plugins. Może być konieczne przeniesienie sekcji konfiguracji pomiędzy elementami wykonawczymi.

Powiązane problemy