一,maven的概念
mava是java项目开发中的辅助工具,主要解决三个问题
1.项目结构
2.项目构建
3.依赖管理(jar包管理)
二.项目结构
我们开发一个javaweb项目,必然需要如下目录
1.源码目录(存放java代码)
2.资源文件(如配置文件,初始化sql等)
3.测试代码目录(存放测试代码)
4.图片目录
name这些目录如何组织和命名呢?
因此Maven提供了不同类型项目默认的命名规则和结构,如果所有的项目都遵守统一的约定
,则项目构建能减少很多配置问题
Maven把统一的项目结构称为项目原形(archetype),其默认提供了不用项目的结构原形
三.项目构建
我们开发一个java项目答题流程如下:
1.搭建开发环境
2.代码编写
3.编译后单元测试
4.bug修改
5.整体测试后打包发布一个版本
6.新的需求或bug修改
7.编译后单元测试
8.整体测试后发布一个版本
.........迭代678.......
如果每个项目都需要这些流程,那么可不可以抽取出一个统一的项目构建流程然后用工具来自动完成呢..
这就是Maven提供的项目构建功能做的事情
四.依赖管理
1.java的第三方库都是使用jar包的形式提供的
2.一般一个第三方jar可能会依赖于其他的jar包这就会形成一个依赖链条,某些时候甚至还会发生冲突,
3.下载繁琐,我的项目需要spring+springMvc+mubatis,就需要去各个站点下载各自提供的jar包,还依赖其他的第三方库
4.版本冲突,如果我的项目依赖于A.jar和B.jar.然后A.jar依赖于C-01.jar...B.jar依赖于C-02.jar..则出现版本冲突
因此Maven提供提供了中央库和依赖坐标的概念
1.依赖仓库,仓库上有所有的jar包.当项目构建中需要jar时,在配置中配置依赖坐标,maven会自动下载这些jar包,maven提供了官方仓库,很多第三方也有公开的仓库,公司内部也可以搭建仓库
2.依赖坐标.每一个jar包都用坐标来定义..在配置文件中配置坐标后即可自动下载
<dependency>
<groupId>org.springframework</groupId> //组织或者机构名
<artifactId>spring-webmvc</artifactId> //项目名
<version>4.3.7.RELEASE</version>//版本
</dependency>
4.以上的依赖坐标的含义是改jar包在仓库中的路径
仓库路径/org.springframework/spring-webmvc/4.3.7.RELEASE/spring-webmvc-4.3.7.RELEASE.jar
Maven会自动管理依赖链,实际上会自动下载下面四个jar包
spring-webmvc-4.3.7.RELEASE.jar spring-aop-4.3.7.RELEASE.jar
spring-beans-4.3.7.RELEASE.jar spring-context-4.3.7.RELEASE.jar
spring-core-4.3.7.RELEASE.jar commons-logging-1.2.jar
spring-expression-4.3.7.RELEASE.jar spring-web-4.3.7.RELEASE.jar