博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven - 继承和聚合
阅读量:6364 次
发布时间:2019-06-23

本文共 5238 字,大约阅读时间需要 17 分钟。

*聚合(多模块)

             在一个项目中 往往有多个模块组成  例如有项目demo  下面有a, b两个模块

             为了能使用一条命令就能构建demo-a, demo-b两个模块, 需要创建一个额外的聚合模块, 然后通过该模块构建整个项目的所有模块。

              聚合模块(demo-parent) pom:

4.0.0
com.x.demo
demo-parent
pom
0.0.1-SNAPSHOT
demo-parent Maven Webapp
http://maven.apache.org
../demo-a
../demo-b

             模块a(demo-a) pom:

 
4.0.0
 
com.x.demo
 
demo-a
 
jar
 
0.0.1-SNAPSHOT
 
demo-a Maven Webapp
 
http://maven.apache.org
   
   
     
junit
     
junit
     
3.8.1
     
test
   
 
   
   
demo-a
 

             模块b(demo-b) pom:

4.0.0
com.x.demo
demo-b
jar
0.0.1-SNAPSHOT
demo-b Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
demo-b

      额外模块(demo-parent) pom中的modules节点有多个module,每个module的值都是一个被聚合模块的相对目录。

     关于聚合模块目录与其他模块的目录主要有两种形式:

      a.父子关系:

     

         父子关系  聚合模块的pom:

demo-a
demo-b

      a.平行目录:

    

         平行目录  聚合模块的pom:

../demo-a
../demo-b

    最后在聚合模块(demo-parent)的pom上面 运行mvn命令 根据聚合顺序依次构建多个模块。

*继承

       上面的例子中, a,b两个模块都依赖junit, 为了消除重复,可以使用pom的继承,以达到一处声明,多处使用的目的。

      聚合模块(demo-parent) pom:

4.0.0
com.x.demo
demo-parent
pom
0.0.1-SNAPSHOT
demo-parent Maven Webapp
http://maven.apache.org
    
   
     
junit
     
junit
     
3.8.1
     
test
   
 
 
../demo-a
../demo-b

             模块a(demo-a) pom:

4.0.0
com.x.demo
demo-parent
0.0.1-SNAPSHOT
../demo-parent/pom.xml
demo-a
demo-a Maven Webapp
demo-a

             模块b(demo-b) pom:

4.0.0
com.x.demo
demo-parent
0.0.1-SNAPSHOT
../demo-parent/pom.xml
demo-b
demo-a Maven Webapp
demo-b

   parent元素声明父模块,parent下的子节点groupId,artifactId,version指定父模块的坐标,这三个元素是必须的。

   节点relativePath指定父模块pom的路径,默认值是:../pom.xml,也就是说父pom在上一层目录,(<relativePath>../demo-parent/pom.xml</relativePath> 表示父模块pom和子模块是平行目录)

可以被继承的POM元素

groupId:项目id,项目坐标的核心元素

version:项目版本,项目坐标的核心元素

description:项目描述信息

organization:项目组织信息

inceptionYear:项目创世年月

developers:项目开发者信息

contributors:项目贡献者信息

distributionManagement:项目部署配置

scm:项目的版本控制信息

mailingLists:项目邮件列表信息

properties:自定义的属性

dependencies:项目的依赖配置

dependencyManagement:项目的依赖管理配置

repositories:项目的仓库配置

build:项目源码目录配置。输出目录配置,插件配置等。

*依赖管理

             父模块(demo-parent) pom:

4.0.0
com.x.demo
demo-parent
pom
0.0.1-SNAPSHOT
demo-parent Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
../demo-a
../demo-b

             模块a(demo-a) pom:

4.0.0
com.x.demo
demo-parent
0.0.1-SNAPSHOT
../demo-parent/pom.xml
demo-a
demo-a Maven Webapp
1.4.1
junit
junit
javax.mail
mail
${mail.version}
demo-a
             模块b(demo-b) pom:
4.0.0
com.x.demo
demo-parent
0.0.1-SNAPSHOT
../demo-parent/pom.xml
demo-b
demo-a Maven Webapp
demo-b

父POM 中使用dependencyManagement 声明的依赖不会给子模块引入依赖, 只会继承这段配置。

在模块a(demo-a) pom中声明了父pom中junit依赖 在执行的时候才会获得真正的依赖信息。

模块b(demo-b) pom中没有声明父pom中junit依赖 不会产生实际效果。

转载于:https://www.cnblogs.com/java-wl/archive/2012/07/22/2923139.html

你可能感兴趣的文章
地图点聚合优化方案
查看>>
Google Chrome 快捷方式
查看>>
备考PMP心得体会
查看>>
vue proxy匹配规则
查看>>
线上应用故障排查之一:高CPU占用
查看>>
Extend Volume 操作 - 每天5分钟玩转 OpenStack(56)
查看>>
review what i studied `date` - 2017-4-1
查看>>
IronPython教程
查看>>
squid via检测转发循环
查看>>
计算分页
查看>>
iptables 做nat路由器脚本
查看>>
数据结构(C语言版)第三章:栈和队列
查看>>
Keepalive 之 keepalive概念介绍
查看>>
Stopping and/or Restarting an embedded Jetty in...
查看>>
Oracle存储过程中的数据集输入参数
查看>>
vsftp 配置
查看>>
VCSA中配置时间和时区,实测至6.5适用
查看>>
高并发IM系统架构优化实践
查看>>
产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡
查看>>
有关linux--进程组、会话、守护进程详解
查看>>