2010-02-16 2 views
23

Czy można dołączyć kilka mniejszych plików pom, aby utworzyć macierzysty plik pom. Chciałbym podzielić raportowanie, zbudować sekcje na własne poms i uwzględnić je w macierzystej pom), aby skutecznie nimi zarządzać.Czy można dzielić pliki maven pom?

Odpowiedz

14

Jeśli używasz Maven 2, możesz po prostu utworzyć kilka poziomów nadrzędnych. Pierwszy (pom.xml (pom1) określi podstawowe właściwości (na przykład repozytoria). Drugie urządzenie o nazwie pom.xml (pom2), które ma pom1 jako <parent>, zdefiniuje informacje raportowania. I tak dalej ... Ostatecznie "prawdziwy" pom.xml odziedziczy po pom2 i zdefiniuje własne właściwości.

Możesz utworzyć dowolną liczbę poziomów dla rodziców (oczywiście, będzie trudniej zachować, jeśli masz 5 poziomów dla rodziców).

Zauważ, że Maven 3 rozmawialiśmy o wprowadzenie mixin concept, który pozwoli Ci fragment swoją pom.xml na kilka plików, ale wygląda na to that is not happening now until maven 4

+1

Zgadnij, poczekam na funkcję mixin w Maven 3 – Joe

+0

@Joshua Maven 3 jest już dostępna, nawet jeśli jest to wersja beta, jest dość stabilna. Maven 3 oferuje 100% kompatybilność z Maven 2 'pom.xml'. Jest już używany przez najnowsze wersje NetBeans, m2eclipse lub IntelliJ. – romaintaz

+3

Maven 3.0 nie oferuje jeszcze mixin * jeszcze *. –

5

Niezupełnie. Nie możesz uwzględnić raportowania i tworzenia sekcji zdefiniowanych w mniejszych POM, możesz tylko inherit them from a parent POM.
Jeśli twój POM jest zbyt duży, możliwe (i zalecane) jest rozmieszczenie zależności w grupach logicznych. Na przykład, dla projektu GWT, można utworzyć nowy POM dla całej swojej wytrwałości związanej z GWT następująco:

<project> 
    <groupId>org.yourcompany</groupId> 
    <artifactId>gwt-dependencies</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 
    <dependencies> 
    <dependency> 
     <groupId>com.google</groupId> 
     <artifactId>gwt-user</artifactId> 
     <version>2.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.extjs</groupId> 
     <artifactId>gxt</artifactId> 
     <version>2.1.0</version> 
    </dependency> 
    <!-- etc --> 
    </dependencies> 
</project> 

Te grupy mogą być zawarte w głównej POM.

+1

Zobacz także: http://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html –

1

Niedawno możliwe stało się użycie opcji Maven Tiles. Wtyczka pozwoli ci wykonywać operacje mixin nie dostarczone przez Mavena 3. Jednak każdy mixin wymaga uwolnionego artefaktu.