maven
Maven 索引
maven是apache公司开源项目,是项目构建的工具。用来依赖管理
maven的好处
jar包的管理,用户只关心自己的代码,不用再去提交第三方的jar包到自已的版本控制器。
项目构建;项目依赖管理;软件项目持续集成;版本管理;项目的站点描述信息管理;
maven的好处如何实现
maven的两大核心:
依赖管理:对jar包管理过程
项目构建:项目在编码完成后,对项目进行编译、测试、打包、部署一系列的操作都通过命令来实现
通过maven命令将web项目发布到tomcat:
maven的重点
生命周期是重点
依赖范围与依赖传递是重点
依赖冲突解决是重点
排除依赖是重点
maven的概念模型是重点
依赖范围 | 对于编译classpath有效 | 对于测试classpath有效 | 对于运行时classpath有效 | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | spring-core |
test | - | Y | - | junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc驱动 |
system | Y | Y | - | 本地的,maven仓库之外的类库 |
##maven传递依赖冲突解决
传递依赖:A(项目)依赖B,B依赖C(1.1版本),B是A的直接依赖,C就是A的传递依赖,导入依赖D,D依赖C(1.2版本)
###1.1 maven自己调解原则
####1.1.1 第一声明者优先原则
谁先定义的就用谁的传递依赖。
1.1.2路径近者优先原则
直接依赖级别高于传递依赖。
1.2排除依赖
###1.3版本锁定(推荐使用)
##maven对项目进行拆分、聚合(重点)
对现在已有maven ssh项目进行拆分,拆分思路:将dao层的代码已经配置文件全体提取出来到一个表现上独立的工程中。同样service、action拆分。
ssh-parent:父工程
ssh-dao(子模块)、ssh-service、ssh-web
拆分完成对拆分后的项目进行聚合,提出概念父工程
1.1创建父工程
1.2将创建父工程发布到本地仓库
1.3创建子模块ssh-dao
ssh-dao负责数据访问层:包含dao相关代码&配置文件
1.4创建子模块ssh-service
1.5创建子模块ssh-web
1.6运行方式
maven私服安装
maven项目–》本地仓库–》私服–》中央仓库
1.私服安装
2.私服仓库类型
hosted:宿主仓库;存放本公司开发的jar包(正式版本、测试版本、第三方:存在版本问题-oracle)
proxy:代理仓库;代理中央仓库、apache下测试版本的jar包
group:组仓库;将来连接组仓库。包含hosted、proxy