前面我们已经接触了`npm`这个包管理器,我们使用其在`Node.js`安装需要的包。对于`maven`我们大概可以这样理解:
`360软件管家` = `windows`下的软件管理工具。
`npm` = `Node.js`下的软件管理工具。
`maven` = `java`下的软件管理工具。
除此以外,如果你用过其它的管理工具比如`php`下的`compose`、`python`的`pip`等,理解为什么要在这里安装`maven`就很轻松了。
## MACOS
### 使用命令行安装
在`macos`的环境下,我们可以使用包管理工具`brew`进行`maven`的安装,仅需打开命令行:
```
brew install maven
// 指定maven版本
brew install maven@3.5
```
使用`mvn -v`来查看安装成功,您也可以参照以下教程手动安装`maven`。
```
htx@htxdeMac-mini ~ mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/Cellar/maven@3.5/3.5.4/libexec
Java version: 1.8.0_222, vendor: AdoptOpenJDK, runtime: /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
```
### 下载
进入`maven`[官网](https://maven.apache.org/download.cgi)获取下载压缩包,注意最新版本的`maven`需要`jdk1.7`或更高的版本才能运行。
![](https://img.kancloud.cn/7b/97/7b97433b68ad31058896d16d160eb330_1499x798.png)
### 安装
将下载的安装包解压并移动自定义的文件目录下,在这里选择了我电脑上的`/Users/htx/bin/apache-maven-3.6.2`这个目录。
配置本用户的环境变量。
```
vim ~/.bash_profile
```
修改`M2_HOME`为安装包路径,粘贴到命令行上,依次敲入`Esc`,`:wq`,回车保存。
```
export M2_HOME=/Users/htx/bin/apache-maven-3.6.2
export PATH=$PATH:$M2_HOME/bin
```
使资源生效:
```
source ~/.bash_profile
```
### 验证
输入`mvn -v`:
```
htx@htxdeMac-mini ~ mvn -v
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T23:06:16+08:00)
Maven home: /Users/htx/bin/apache-maven-3.6.2
Java version: 1.8.0_222, vendor: AdoptOpenJDK, runtime: /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
```
## ubuntu
`maven`的安装与`jdk`的安装过程大同小异,让我们一步步安装一下。
### 下载
进入`maven`的官方[下载链接](https://maven.apache.org/download.cgi),注意目前最新版的`maven(3.6.2)`要求`jdk1.7`以上的版本,如果你按照之前的教程安装过jdk8,那么可以继续安装。
![](https://img.kancloud.cn/fb/3e/fb3e20a4c384908ea5c1e50f75a31bc2_1902x999.png)
点击`apache-maven-3.6.2-bin.tar.gz`这一项进行下载。
### 解压
进入下载目录解压,可以使用右键,选择提取到,之后选择jdk安装的位置;也可以使用命令进行解压,在命令行中进入jdk的存放目录,输入解压命令:
`sudo tar -zxvf 文件名-C 解压到的目录(不写则为当前目录)`
![](https://img.kancloud.cn/fe/d8/fed87c342e853de023174ae072095ce4_754x74.png)
## 设置环境变量
是不是觉得上一次的`vim`很难用?很不习惯?
实际上ubuntu下也是有比较“正常”的文本编辑器的,这一次我决定用它,在命令行中输入:`sudo gedit /etc/profile`([是不是感觉上次不是这个文件?](https://segmentfault.com/a/1190000006446751#articleHeader5))
熟悉的编辑页面出现了
![](https://img.kancloud.cn/17/39/17393f945df1928b43b285f5574346f4_896x633.png)
文末添加如下配置并保存
```
export M2_HOME=文件所在目录
export PATH=${M2_HOME}/bin:$PATH
```
![](https://img.kancloud.cn/ee/b2/eeb219ed3d3b60a83eb3b3e25c41d625_860x718.png)
接下来需要做什么还记得吗?对,让新设置的环境变量生效
运行:`source /etc/profile`
### 验证
看看效果:`mvn -v`
![](https://img.kancloud.cn/a2/93/a293e50231c387b315b683f2bb618a09_781x314.png)
### 同样的可以使用apt一键安装
`sudo apt-get install maven`
## windows
### 下载
进入`maven`的官方[下载链接](https://maven.apache.org/download.cgi),注意目前最新版的`maven(3.6.2)`要求`jdk1.7`以上的版本,如果你按照之前的教程安装过jdk8,那么可以继续安装。
![](https://img.kancloud.cn/fb/3e/fb3e20a4c384908ea5c1e50f75a31bc2_1902x999.png)
点击`apache-maven-3.6.2-bin.zip`这一项进行下载。
### 安装
下载后将压缩包进行解压,将文件夹剪切到`C:\Program Files`(您可以放入任何路径下 ,但需要记住这个安装路径以便接下来的配置)。
![](https://img.kancloud.cn/1e/66/1e66e4c7e1b03d4fbb15702ecc2fde51_1328x712.png)
接下来我们配置`maven`的环境变量,打开配置环境变量的窗口,点击系统变量的新建,添加:
```
变量名: M2_HOME
变量值: C:\Program Files\apache-maven-3.6.2-bin\apache-maven-3.6.2
```
您也可以选择浏览目录,然后选择你的安装路径。
![](https://img.kancloud.cn/57/85/5785cae47be568a769399cb5a3eb28af_753x713.png)
之后,我们编辑`Path`,在最末尾追加`%M2_HOME%\bin`这一项:
![](https://img.kancloud.cn/3b/66/3b66f6ae6bfccd38855cdbf6b430d137_778x726.png)
### 验证
代开终端,输入`mvn -v`进行验证:
![](https://img.kancloud.cn/9d/65/9d65e28d0a60736a592dc2c9c1e80a28_993x519.png)
- 序言
- 第一章:Hello World
- 第一节:Angular准备工作
- 1 Node.js
- 2 npm
- 3 WebStorm
- 第二节:Hello Angular
- 第三节:Spring Boot准备工作
- 1 JDK
- 2 MAVEN
- 3 IDEA
- 第四节:Hello Spring Boot
- 1 Spring Initializr
- 2 Hello Spring Boot!
- 3 maven国内源配置
- 4 package与import
- 第五节:Hello Spring Boot + Angular
- 1 依赖注入【前】
- 2 HttpClient获取数据【前】
- 3 数据绑定【前】
- 4 回调函数【选学】
- 第二章 教师管理
- 第一节 数据库初始化
- 第二节 CRUD之R查数据
- 1 原型初始化【前】
- 2 连接数据库【后】
- 3 使用JDBC读取数据【后】
- 4 前后台对接
- 5 ng-if【前】
- 6 日期管道【前】
- 第三节 CRUD之C增数据
- 1 新建组件并映射路由【前】
- 2 模板驱动表单【前】
- 3 httpClient post请求【前】
- 4 保存数据【后】
- 5 组件间调用【前】
- 第四节 CRUD之U改数据
- 1 路由参数【前】
- 2 请求映射【后】
- 3 前后台对接【前】
- 4 更新数据【前】
- 5 更新某个教师【后】
- 6 路由器链接【前】
- 7 观察者模式【前】
- 第五节 CRUD之D删数据
- 1 绑定到用户输入事件【前】
- 2 删除某个教师【后】
- 第六节 代码重构
- 1 文件夹化【前】
- 2 优化交互体验【前】
- 3 相对与绝对地址【前】
- 第三章 班级管理
- 第一节 JPA初始化数据表
- 第二节 班级列表
- 1 新建模块【前】
- 2 初识单元测试【前】
- 3 初始化原型【前】
- 4 面向对象【前】
- 5 测试HTTP请求【前】
- 6 测试INPUT【前】
- 7 测试BUTTON【前】
- 8 @RequestParam【后】
- 9 Repository【后】
- 10 前后台对接【前】
- 第三节 新增班级
- 1 初始化【前】
- 2 响应式表单【前】
- 3 测试POST请求【前】
- 4 JPA插入数据【后】
- 5 单元测试【后】
- 6 惰性加载【前】
- 7 对接【前】
- 第四节 编辑班级
- 1 FormGroup【前】
- 2 x、[x]、{{x}}与(x)【前】
- 3 模拟路由服务【前】
- 4 测试间谍spy【前】
- 5 使用JPA更新数据【后】
- 6 分层开发【后】
- 7 前后台对接
- 8 深入imports【前】
- 9 深入exports【前】
- 第五节 选择教师组件
- 1 初始化【前】
- 2 动态数据绑定【前】
- 3 初识泛型
- 4 @Output()【前】
- 5 @Input()【前】
- 6 再识单元测试【前】
- 7 其它问题
- 第六节 删除班级
- 1 TDD【前】
- 2 TDD【后】
- 3 前后台对接
- 第四章 学生管理
- 第一节 引入Bootstrap【前】
- 第二节 NAV导航组件【前】
- 1 初始化
- 2 Bootstrap格式化
- 3 RouterLinkActive
- 第三节 footer组件【前】
- 第四节 欢迎界面【前】
- 第五节 新增学生
- 1 初始化【前】
- 2 选择班级组件【前】
- 3 复用选择组件【前】
- 4 完善功能【前】
- 5 MVC【前】
- 6 非NULL校验【后】
- 7 唯一性校验【后】
- 8 @PrePersist【后】
- 9 CM层开发【后】
- 10 集成测试
- 第六节 学生列表
- 1 分页【后】
- 2 HashMap与LinkedHashMap
- 3 初识综合查询【后】
- 4 综合查询进阶【后】
- 5 小试综合查询【后】
- 6 初始化【前】
- 7 M层【前】
- 8 单元测试与分页【前】
- 9 单选与多选【前】
- 10 集成测试
- 第七节 编辑学生
- 1 初始化【前】
- 2 嵌套组件测试【前】
- 3 功能开发【前】
- 4 JsonPath【后】
- 5 spyOn【后】
- 6 集成测试
- 7 @Input 异步传值【前】
- 8 值传递与引入传递
- 9 @PreUpdate【后】
- 10 表单验证【前】
- 第八节 删除学生
- 1 CSS选择器【前】
- 2 confirm【前】
- 3 功能开发与测试【后】
- 4 集成测试
- 5 定制提示框【前】
- 6 引入图标库【前】
- 第九节 集成测试
- 第五章 登录与注销
- 第一节:普通登录
- 1 原型【前】
- 2 功能设计【前】
- 3 功能设计【后】
- 4 应用登录组件【前】
- 5 注销【前】
- 6 保留登录状态【前】
- 第二节:你是谁
- 1 过滤器【后】
- 2 令牌机制【后】
- 3 装饰器模式【后】
- 4 拦截器【前】
- 5 RxJS操作符【前】
- 6 用户登录与注销【后】
- 7 个人中心【前】
- 8 拦截器【后】
- 9 集成测试
- 10 单例模式
- 第六章 课程管理
- 第一节 新增课程
- 1 初始化【前】
- 2 嵌套组件测试【前】
- 3 async管道【前】
- 4 优雅的测试【前】
- 5 功能开发【前】
- 6 实体监听器【后】
- 7 @ManyToMany【后】
- 8 集成测试【前】
- 9 异步验证器【前】
- 10 详解CORS【前】
- 第二节 课程列表
- 第三节 果断
- 1 初始化【前】
- 2 分页组件【前】
- 2 分页组件【前】
- 3 综合查询【前】
- 4 综合查询【后】
- 4 综合查询【后】
- 第节 班级列表
- 第节 教师列表
- 第节 编辑课程
- TODO返回机制【前】
- 4 弹出框组件【前】
- 5 多路由出口【前】
- 第节 删除课程
- 第七章 权限管理
- 第一节 AOP
- 总结
- 开发规范
- 备用