1. 主要内容
- Maven简介
- Maven的安装配置和结构目录
- IDEA编辑器集成Maven环境
- Maven项目的创建
- Maven仓库的基本概念
- Maven环境下构建多模块项目
- Maven的打包操作
- Maven依赖的基本概念
2.Maven的简介
2.1.简介
Maven主要体现在项目和管理两个方面,从技术上说,Maven中我们可以通过配置文件的方式来对项目进行管理,对项目的依赖,配置,名称,版本号等进行描述从而进行管理。
Maven仓库则是针对某些项目会依赖于其他项目或者说是第三方的插件,将其放入仓库中供开发中的项目使用。
Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
POM:项目对象模型
项目构建:提供标准的,跨平台的自动化项目构建方式
依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题。
统一开发结构:提供标准的,统一的项目结构
2.2.项目构建
2.3.项目构建工具
Maven仍然采用xml作为文件配置格式
2.4.Maven的四大特性
2.4.1.依赖管理系统
Maven提供了一个新的依赖管理系统:jar包管理。jar升级时仅去修改配置文件即可。
Java中我们可以使用groupId(公司Id)、artfactId(项目Id)、version(项目版本)组成的Coordination(坐标)唯一标识一个依赖。
示例代码如下:
<dependency>
<groupId>javax.servlet</groupId> com.baidu <!--需要一个servlet依赖-->
<artifactId>javax.servlet-api</artifactId> ueditor echarts
<version>3.1.0</version>
</dependency>
坐标属性的理解
Maven坐标为各种组件引入了秩序,任何一个组件都必须明确定义自己的坐标。Maven中的坐标用于描述仓库中资源的位置。
Maven坐标的作用:使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成。
groupId
定义当前Maven项目隶属的实际项目__公司名称。在Maven中,一个实际项目往往会被划分成很多模块。例如spring是一个实际项目,而spring_core,spring_webmvc等就是Maven模块。
artfactId
该元素定义实际项目中的一个Maven模块__项目名,一般是使用项目名作为前缀,如:spring_bean,spring_webmvc等。
version
该元素定义版本
2.4.2.多模块构建
将一个项目分成多个功能模块,进行模块化的开发和测试。
2.4.3.一致的项目结构
Maven框架统一了项目的目录结构。
2.4.4.一致的构建模型和插件机制
3.认识Maven目录结构
Maven项目目录结构:
目录 | 目的 |
---|---|
${basedir} | 存放pom.xml和所有的子目录pom是Maven项目所需的所有jar包和插件的依赖。 |
${basedir}/src/main/java | 项目的java源代码 |
${basedir}src/main/resources | 项目的资源(配置文件),比如说property文件 |
${basedir}src/test/java | 项目的测试类,如JUnit代码 |
${basedir}src/test/resources | 测试使用的资源 |
小拓展
xxxAPP版本号为a.b.c-里程碑
其中第一个x:大版本更新,有重大变革
第二个x:小版本更新,修复了bug,增加了功能
第三个x:更新
里程碑版本:
SNAPSHOT (快照/开发版)
alpha (内部测试)
beta (外部测试)
Release | Rc (发布版)
GA (稳定版/正常版)
4.Maven命令
Maven命令格式如下:
mvn+空格+[piugin-name//插件的名字]+ :+[goal-name//命令的名字]
5.Maven创建Java项目
Idea->File->New->Project->Maven->勾选Create->选择maven-archetype-quickstart->起公司ID和项目ID->起项目名字->结束。
6.Maven创建Web项目
Idea->File->New->Project->Maven->勾选Create->选择maven-archetype-webapp->起公司ID和项目ID->起项目名字->结束。
6.1Mavenweb项目在启动前需要修改项目
6.1.1.修改JDK的版本
<!--将JDK的版本改为1.8-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
6.1.2.修改JUnit的版本
<!--改为需要的版本-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
6.1.3.将xml文件中的pluginManagement标签中的东西删除
上面标签是表示插件声明,声明会在当前项目中加载piugins声明的插件。
pluginManagement是表示插件声明,即你在项目中的pluginManagement下声明了插件,maven不会加载该插件,pluginManagement声明可以被继承。
pluginManagement的一个使用案例是当有父子项目的时候,父项目中可以利用pluginManagement声明子项目中需要用到的插件,之后,当某个或者某几个子项目需要加载该插件的时候,就可以在子项目中plugins节点中使用。
pluginManagement一般是用来在父POM中定义,提供给子POM使用。子POM也可以覆盖这个定义,而且你在父POM中定义了版本之后,子模块中直接应用groupId和artifactId,而不用指定版本,同时也方便统一管理;而在父POM中的pluginManagement并不会介入到Maven的生命周期。
7.Maven仓库的概念
Maven仓库分本地仓库和远程仓库。
**仓库:**用于存储资源,包含各种jar包
Maven根据坐标寻找构件时,先查看本地仓库,本地没有就去远程仓库查找并下载,若远程仓库也没有,则报错。
远程仓库分为中央仓库,私服和其他公共库。
中央仓库是默认配置下,Maven下载jar包的地方。
8.Maven多模块的创建
8.1创建多模块
Idea->File->New->Project->Maven->不勾选Create->起公司ID和项目ID->起项目名字->结束。
此处项目ID应为xxxx_prant(基模块)
xxxx_prant->Maven->勾选Create->选择maven-archetype-quickstart->输入项目ID:xxxx_dao->结束。
xxxx_prant->Maven->勾选Create->选择maven-archetype-quickstart->输入项目ID:xxxx_service->结束。
xxxx_prant->Maven->勾选Create->选择maven-archetype-webapp->输入项目ID:xxxx_controller->结束。