Maven - explicación detallada del módulo de agregación / proyecto padre-hijo

1. Módulo de agregación de Maven

El módulo de agregación es el nivel superior del directorio del proyecto y existen otros módulos como subdirectorios de módulos de agregación. El propósito es construir varios módulos de proyecto a la vez.

La estructura del proyecto es la siguiente:
Inserte la descripción de la imagen aquí

Generalmente, el módulo agregado puede entenderse como el proyecto principal y los siguientes módulos son submódulos.
Función 1 : El proyecto principal es un proyecto pom, que generalmente es solo una herramienta para ayudar a construir sus submódulos y no tiene contenido sustancial. El código específico de cada proyecto todavía está escrito en el proyecto generado. Todos los submódulos se heredan del módulo principal, y el módulo principal se utiliza para el control de versiones de todo el proyecto, es decir, las versiones de todos los paquetes jar que se utilizarán en el proyecto se gestionan de forma centralizada por el proyecto principal. De esta manera, no es necesario que escriba el número de versión al escribir las dependencias de maven en otros archivos pom del proyecto.
Por lo general, un proyecto grande dividirá el proyecto en varios módulos. Por ejemplo, como se muestra en la figura anterior, no habrá dependencias entre los distintos submódulos, pero hay muchas cosas en común entre ellos, como muchas configuraciones similares y muchos frascos similares, paquetes, etc., en este momento se pueden reflejar las ventajas del proyecto principal y del subproyecto. Sabemos que el pom.xml del proyecto padre maven y el subproyecto tiene una relación de herencia, es decir, las mismas partes de cada módulo se pueden configurar en el archivo pom.xml del proyecto padre, de modo que el pom. xml en el subproyecto solo se coloca en sí mismo. Las cosas de personalidad están bien, lo que reduce en gran medida la carga de trabajo. Además, otras etapas, como la compilación y el empaquetado, pueden llevarse a cabo en el proyecto principal, y maven operará automáticamente los subproyectos para mejorar la eficiencia. Como se muestra abajo:
Inserte la descripción de la imagen aquí

Introduzca dos submódulos en el archivo pom del módulo principal:

<modules>
<module>Model1</module>
<module>Model2</module>
</modules>

En este momento, Model1 y Model2 son submódulos de ParentProject. En este momento, Model1 y Model2 heredarán la configuración del archivo pom.xml en ParentProject.

2. Herencia Pom

La herencia de Pom es extraer la configuración repetida, generalmente configurada en el módulo principal, para proporcionar uso para el submódulo, de modo que se pueda lograr "una declaración, uso en todas partes".
Inserte la descripción de la imagen aquí

En este momento, los archivos pom de Model1, Model2 y Model3 se heredan de Parent.
Elementos heredados de pom de uso común:

groupId :项目组 ID ,项目坐标的核心元素;    
version :项目版本,项目坐标的核心元素;    
description :项目的描述信息;    
properties :自定义的 Maven 属性;    
dependencies :项目的依赖配置;    
dependencyManagement :醒目的依赖管理配置;    
repositories :项目的仓库配置;    
build :包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等;

Para la configuración específica del archivo pom.xml, consulte lo siguiente:
https://blog.csdn.net/u012152619/article/details/51485297

como sigue:

Pom del proyecto principal:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  
  <groupId>com.sohu.train</groupId>  
  <artifactId>maven-aggregate</artifactId>  
  <version>0.0.1-SNAPSHOT</version>  
  <packaging>pom</packaging>  
  
  <!-- 子模块 -->  
  <modules>  
    <module>../maven-01</module>  
    <module>../maven-02</module>  
    <module>../maven-03</module>  
  </modules>   
  <!-- 统一配置构件的版本号 -->  
  <properties>  
    <junit.version>3.8.1</junit.version>  
  </properties>  
    
  <!-- 依赖管理 -->  
  <dependencyManagement>  
    <dependencies>  
        <dependency>  
            <groupId>junit</groupId>  
            <artifactId>junit</artifactId>  
            <version>${junit.version}</version>  
            <scope>test</scope>  
        </dependency>  
    </dependencies>     
  </dependencyManagement>  
</project>  

Archivo pom del subproyecto:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
    <modelVersion>4.0.0</modelVersion>  
    <!-- 指定父pom的坐标及pom位置 -->  
    <parent>  
        <groupId>com.sohu.train</groupId>  
        <artifactId>maven-aggregate</artifactId>  
        <version>0.0.1-SNAPSHOT</version>  
        <relativePath>../maven-aggregate/pom.xml</relativePath>  
    </parent>  
    <artifactId>maven-03</artifactId>  
    <packaging>jar</packaging>  

        <!-- 添加对junit依赖,这样公用配置只需要在maven-aggregate中去配置 -->  
       因为在父工程中添加同一依赖,这一部分可以不要。 
				    <dependencies>  
				        <dependency>  
				            <groupId>junit</groupId>  
				            <artifactId>junit</artifactId>  
				        </dependency>  
				    </dependencies>  
</project>  

Supongo que te gusta

Origin blog.csdn.net/weixin_44556968/article/details/109891424
Recomendado
Clasificación