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

本文共 5241 字,大约阅读时间需要 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/yangjin-55/archive/2012/07/22/2786524.html

你可能感兴趣的文章
LoadLibrary 失败 GetLastError 126
查看>>
Monty Hall 问题与贝叶斯定理的理解
查看>>
利用JavaScript的字符串操作实现简单查字
查看>>
安全发布的模式
查看>>
python的N个小功能(更新文件)
查看>>
【bzoj 4390】 [Usaco2015 dec]Max Flow(树上差分)
查看>>
java之sleep、wait、yield、join、notify乱解
查看>>
DEDECMS 关键字不能小于2个字节!
查看>>
Flutter学习笔记(10)--容器组件、图片组件
查看>>
gitlab 的使用策略和简单介绍
查看>>
Web.py Cookbook 简体中文版 - 保存上传的文件
查看>>
MongoDB学习笔记二—Shell操作
查看>>
Docker——入门实战
查看>>
UIView
查看>>
List 的一个有用的高效的操作 removeAll
查看>>
呵呵 不能相信
查看>>
jQuery小测验
查看>>
C#继承与多态
查看>>
关于面试总结2-SQL学生表
查看>>
Python小技巧
查看>>