Maven -- 聚合模块/父子工程详解

文章目录

    • 1、maven聚合模块
    • 2、pom继承

1、maven聚合模块

聚合模块为项目目录的最顶层,其他模块作为聚合模块子目录而存在。目的是为一次构建多个项目模块。

项目结构如下:
Maven -- 聚合模块/父子工程详解_第1张图片

通常聚合的模块可以理解为为父工程,下面的模块为子模块。
聚合模块(父工程)作用1:父工程是一个pom工程,通常只是用来帮助其子模块构建的工具,本身并没有实质的内容。具体每个工程代码的编写还是在生成的工程中去写。所有的子模块都继承于父模块,父模块用来做整个项目的版本控制,也就是项目中所有要使用到的jar包的版本都集中由父工程管理。这样你在写其他工程pom文件中maven依赖时就不需要写版本号了。
通常一个大的项目会将项目分成多个模块,比如上图,各个子模块之间不会有依赖关系,但是他们之间却有很多共性的东西,比如说很多类似的配置、很多类似的 jar包等等,这时候父项目和子项目的优势就能体现出来了。我们知道maven父项目和子项目的pom.xml是有继承关系的,也就是说各个模块相同的部 分,我们可以配置到父项目的pom.xml文件中,这样子项目中的pom.xml只放自己个性的东西就可以了,这大大减少了工作量。另外,在编译和打包等 其他阶段,都可以统一在父项目中来进行,maven会自动操作其中的子项目,提高了效率。如下图所示:
Maven -- 聚合模块/父子工程详解_第2张图片

在父模块的pom文件中引入两个子模块:、

<modules>
<module>Model1module>
<module>Model2module>
modules>

此时Model1和Model2为ParentProject的子模块,此时Model1和Model2会继承ParentProject中pom.xml文件的配置。

2、pom继承

pom继承是为了抽出重复配置,通常配置在父模块中,为子模块提供使用,这样可以做到“一处声明,处处使用”。
Maven -- 聚合模块/父子工程详解_第3张图片

此时Model1、Model2、Model3的pom文件继承与Parent。
常用的pom被继承的元素:

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

具体pom.xml文件配置参考下文:
https://blog.csdn.net/u012152619/article/details/51485297

如下:

父工程pom:

<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.0modelVersion>  
  
  <groupId>com.sohu.traingroupId>  
  <artifactId>maven-aggregateartifactId>  
  <version>0.0.1-SNAPSHOTversion>  
  <packaging>pompackaging>  
  
    
  <modules>  
    <module>../maven-01module>  
    <module>../maven-02module>  
    <module>../maven-03module>  
  modules>   
    
  <properties>  
    <junit.version>3.8.1junit.version>  
  properties>  
    
    
  <dependencyManagement>  
    <dependencies>  
        <dependency>  
            <groupId>junitgroupId>  
            <artifactId>junitartifactId>  
            <version>${junit.version}version>  
            <scope>testscope>  
        dependency>  
    dependencies>     
  dependencyManagement>  
project>  

子工程pom文件:

<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.0modelVersion>  
      
    <parent>  
        <groupId>com.sohu.traingroupId>  
        <artifactId>maven-aggregateartifactId>  
        <version>0.0.1-SNAPSHOTversion>  
        <relativePath>../maven-aggregate/pom.xmlrelativePath>  
    parent>  
    <artifactId>maven-03artifactId>  
    <packaging>jarpackaging>  

          
       因为在父工程中添加同一依赖,这一部分可以不要。 
				    <dependencies>  
				        <dependency>  
				            <groupId>junitgroupId>  
				            <artifactId>junitartifactId>  
				        dependency>  
				    dependencies>  
project>  

你可能感兴趣的:(Maven,聚合模块,父子工程)