2011-09-21 16 views
6

Soy nuevo en Maven, y estoy tratando de entender por qué los módulos de mi compañía están organizados en 'grupos de módulos', pero también cada submódulo declara su padre explícitamente. No entiendo muy bien lo que la Referencia POM está tratando de decir sobre el difference between inheritance and aggregation.Apache Maven: ¿Cuál es la diferencia entre Herencia, Agregación y Dependencias?

Por ejemplo, un módulo primario:

<groupId>example.group</groupId> 
<artifactId>util</artifactId> 
<packaging>pom</packaging> 
<name>Util Parent</name> 

<modules> 
    <module>util_client</module> 
    <module>util_core</module> 
    <module>util_server</module> 
</modules> 

y uno de sus hijos:

<parent> 
    <artifactId>util</artifactId> 
    <groupId>example.group</groupId> 
    <version>trunk-SNAPSHOT</version> 
</parent> 

<groupId>example.group.util</groupId> 
<artifactId>util_core</artifactId> 
<packaging>jar</packaging> 
<name>Util Core</name> 

Por qué declaran las dos cosas? ¿Es redundante? Para hacer las cosas aún más confusas, algunos de los submódulos util dependen unos de otros:

<groupId>example.group.util</groupId> 
<artifactId>util_client</artifactId> 
<packaging>jar</packaging> 
<name>Util Client</name> 

<dependencies> 
    <dependency> 
     <groupId>example.group.util</groupId> 
     <artifactId>util_core</artifactId> 
    </dependency> 
</dependencies> 

Lo siento si esto es un doozy de una pregunta, pero ¡esto es confuso! Gracias por tu ayuda.

Respuesta

9

Cuando defina submódulos, puede compilarlos y liberarlos todos a la vez desde el nivel superior.

Cuando se utiliza la herencia en el segundo ejemplo, puede utilizar las definiciones del POM matriz definida de una vez, (Al igual que las versiones de software a utilizar)

En el último ejemplo, cuando un módulo necesita recursos de otro módulo , puede agregarlo como una dependencia y se descargará e incluirá en la ruta de compilación automáticamente.

+0

Entonces, ¿por qué exactamente no quiero especificar 'util_core' como un submódulo de' util_client'? ¿'Util_client' todavía compilaría? –

+0

No se compilará hasta que 'util_core' se haya instalado' mvn install' Si lo hace desde el nivel superior, compilará todos en orden. –

Cuestiones relacionadas