2010-02-03 7 views
12

Chcę dziedziczyć zależności (rodzica) pom.xml w projekcie potomnym w Maven 2.2.1; tj. dziedziczenie projektu. Wygląda na to, że w tym przypadku należy zmienić domyślny typ opakowania z jar na pom.Czy opakowanie typu "pom" jest potrzebne, gdy nie stosuje się agregacji projektu (wielomodułu)?

Jednak czy numer pom nie jest wymagany do agregacji projektu, tzn. Projekty wielomodułowe, które używają submodułów, ale nie do dziedziczenia projektu?

<project> 
<modelVersion>4.0.0</modelVersion> 
<groupId>example</groupId> 
<artifactId>example-parent</artifactId> 
<version>1</version> 

<dependencies> 
    <dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.14</version> 
    </dependency> 
</dependencies> 
</project> 

<project>  
<parent> 
    <groupId>example</groupId> 
    <artifactId>example-parent</artifactId> 
    <version>1</version> 
</parent> 

<modelVersion>4.0.0</modelVersion> 
<groupId>example</groupId> 
<artifactId>example-child</artifactId> 
</project> 

Ale jeśli zadzwonisz Maven (np mvn clean) z powyższej konfiguracji, pojawi się błąd:

Project ID: example:example-child 

Reason: Parent: example:example-parent:jar:1 
of project: example:example-child has wrong packaging: jar. 
Must be 'pom'. for project example:example-child 

na innych drugiej strony, z następującego wpisu:

<project> 
... 
<packaging>pom</packaging> 
... 
</project> 

w rodzicu pom.xml, Maven można wykonać bez żadnego błędu.

Czy to zachowanie Mavena jest prawidłowe?

Odpowiedz

10

Jak udokumentowano w sekcji Inheritance z POM Reference:

The packaging type required to be pom for parent and aggregation (multi-module) projects.

zachowanie, tak Maven wydaje poprawne do mnie (i komunikat o błędzie jest ładnie siebie tłumacząc).

0

Jak zauważył Pascal, zachowanie jest prawidłowe.

Jeśli nadal poszukujesz sposobów na dzielenie zależności między modułami, możesz rozważyć powiązanie tych zależności w pom, a następnie posiadanie modułów zależy od tego nowego "zależności" pom.

Aby uzyskać więcej informacji, patrz Maven Book Section 3.6.1.

2

Jeśli chcesz tylko dziedziczyć zależności, nie sądzę, że musi to być "pom". Możesz mieć słoik i po prostu określić go jako zależność projektu, który masz jako dziecko. Jednak nie miałbyś wtedy relacji rodzic/dziecko, co uniemożliwia, by twój projekt nadrzędny był typem innym niż "pom".

Aby było jasne, dziedziczysz zależności wszystkich zależności (zależności przechodnie).

Powiązane problemy