Maven中的Scope+Maven工程的拆分与聚合

一.Maven的Scope区别

1.依赖的Scope

scope定义了类包在项目的使用阶段。项目阶段包括: 编译,运行,测试和发布。

2.分类说明


- compile 
  默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会达到包里去。
- test 
  该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比如定性的Junit。
- runtime 
  依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。 
  此类的驱动都是为runtime的类库。
- provided 
  该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与编译、测试和运行等周期,与compile等同。区别在于打包阶段进行了exclude操作。
- system 
  使用上与provided相同,不同之处在于该依赖不从maven仓库中提取,而是从本地文件系统中提取,其会参照systemPath的属性进行提取依赖。
- import 
  这个是maven2.0.9版本后出的属性,import只能在dependencyManagement的中使用,能解决maven单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。

scope的依赖传递

A–>B–>C。当前项目为A,A依赖于B,B依赖于C。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?答案是:
当C是test或者provided时,C直接被丢弃,A不依赖C;
否则A依赖C,C的scope继承于B的scope。

下面是一张nexus画的图。

依赖传递时scope的计算

二.Maven工程的拆分与聚合

之前我们单独创建了一个Maven工程然后根据通过包的划分来分为 web层,service层,和dao层.
其实在一些大型项目中,我们可以通过模块来划分这个三个层
一个层对应一个单独的模块,然后一个人单独去开发一个模块
最后把这三个模块聚合起来,形成一个整体的项目
那我们今天来看一下,如何使用IDEA 来对Maven工程进行拆分合并

1.创建父工程

1.创建父工程,父工程的作用就是在其pom.xml文件中统一管理
子模块所需jar包,也就是说,我在父工程的pom文件中添加好jar
包后,子模块也就相当于有了此jar包,而无需在子模块的pom文件中,再次添加
File ----New—Project 弹出以下选择框

在这里插入图片描述

创建好父工程后,可以删掉父工程的src目录只需要保留pom.xml文件即可
在这里插入图片描述

2.创建Web子模块

在这里插入图片描述
选择Maven 项目 选择 webapp模板
在这里插入图片描述
Web层的子模块就创建成功了,如下图
在这里插入图片描述
把WebMoudle的目录结构补完整

这时可以看下父工程的pom.xml文件
在这里插入图片描述

看看子工程的pom文件
在这里插入图片描述

3.创建Service层的模块

接下来创建Service层的模块
在这里插入图片描述
创建Maven 不需要勾选模板,下一步即可
在这里插入图片描述
然后创建Dao模块 创建方式跟创建Service模块一样,此处省略

二.模块的聚合

接下来,我们要把这个三个模块聚合起来,就是说我们要在Web层调用Service层,在Service层调用Dao层.
那么就得添加依赖,也就是Web层添加依赖 ,依赖Service层,
Service层添加依赖,依赖Dao层 ,这样添加上依赖后,才能调用
看下如何添加依赖

聚合时,idea会自动添加依赖

1.查看jar包

我们可已在IDEA的Maven项目管理模块菜单中查看项目中所有依赖的jar包

在这里插入图片描述
我们也可以显示所有jar包的树型结构图
在这里插入图片描述

2.解决jar包冲突

关于Jar包版本冲突
在我们所依赖的jar包中可能会出现,多个版本不一致的jar包,那么在项目运行时会出现异常,所以如果有jar包冲突的话都需要排除
可以在IDEA jar包树型结构图中看到冲突jar包 如果是红色虚线
则表示有jar包冲突,可以右键虚线选择Exclude排除
下面给大家介绍一个排除jar包冲突的插件,叫做Maven Helper
用它排除jar包冲突的功能很强大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值