1、Maven安装
1、安装Mac版本
(1)下载包
访问官网:https://maven.apache.org/download.cgi
(2)解压缩文件,并且存放一个你自己喜欢的地方,我存在了自己一个喜欢的目录
(3)配置环境变量(配置在自己用户名下)
vim ~/.bash_profile
(4)追加环境配置,并且保存,按ESC再输入:wq
#配置maven环境
export MABEN_HOME="/Users/djy/WorkFile/apache-maven-3.8.1"
export M2_HOME="/Users/djy/WorkFile/apache-maven-3.8.1"
export PATH="$PATH:$MAVEN/bin"
(5)查看maven版本
djydeMacBook-Pro:~ DD$ mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /Users/djy/WorkFile/apache-maven-3.8.1
Java version: 1.8.0_111, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
djydeMacBook-Pro:~ DD$
2、maven结构
1、目录结构
- src:源码
- pom.xml:maven的核心配置文件
- main目录:存放主程序
- test目录:存放测试程序
- java目录:存放Java源文件
-
2、pom.xml文件
```xml <?xml version=”1.0” encoding=”UTF-8”?> <project xmlns=”http://maven.apache.org/POM/4.0.0“
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0 com.daijunyi ssm-03 1.0-SNAPSHOT war org.springframework spring-webmvc 5.3.9
<a name="lR2nG"></a>
# 3、相关命令
```shell
mvn compile #编译
mvn package #打包
mvn test #测试
mvn clean #清理
4、仓库
1、分类
- 本地仓库
- 当前电脑上部署的仓库目录,为当前电脑上所有Maven工程服务
远程仓库
Maven缺省的本地仓库路径为${user.home}/.m2/repository
2、自定义修改仓库位置:
可改变默认的 .m2 目录下的默认本地存储库文件夹
- 通过修改${user.home}/.m2/settings.xml 配置本地仓库路径 ,
- 没有settings这个xml文件就新建,或者如下复制个;具体看图:
- settings.xml文件可以到安装的maven/conf/下复制
具体就是修改settings.xml里面的标签
<settings> <localRepository>自己仓库的存放目录,我的仓库已经移动到e盘了,具体看上面的那个图的箭头所指的位置</localRepository> </settings>
3、仓库中保存的内容:Maven工程
Maven自身所需要的插件
- 第三方框架或工具的jar包
- 我们自己开发的Maven工程
5、依赖
1、依赖范围
- compile范围依赖
- main主程序可见
- test测试程序也可见
- 要进行打包
- test范围依赖
- 对main主程序不可见
- 对test测试程序可见
- 不参与打包
- 例子:junit
- provided范围依赖
- 就开发阶段依赖
- 打包不需要参与,因为在运行环境可能会带
- 例子:servlet-api
- runtime
- runtime 依赖在 编译时不需要,在 测试、运行、打包时需要。
- 例如:jdbc 驱动包,由于运行时需要,所以 runtime 范围的依赖会被打包。
- system
- system 范围依赖 与 provided 类似,但必须显式提供一个对于本地系统中 jar 文本的路径,需要指定 systemPath 磁盘路径,system 依赖不推荐使用。
- 小结:
- 默认引入 的 jar 包 ———- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
- servlet-api 、jsp-api ———- provided (编译、测试 有效, 运行时无效 防止和 tomcat 下 jar 冲突)
- jdbc 驱动 jar 包 —— runtime (测试、运行 有效 )
- junit ——- test (测试有效)
依赖范围由强到弱的顺序是:compile>provided>runtime>test
6、Maven中的DependencyManagement和Dependencies
dependencyManagement
- Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。
- 通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。
- 使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。 Maven 会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用这个 dependencyManagement 元素中指定的版本号。
这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改;另外如果某个子项目需要另外的一个版本,只需要声明version就可。
- dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。
- 如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本, 才会从父项目中继承该项,并且version和scope都读取自父pom;
- 如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。
7、开发环境配置
1、配置阿里云镜像
文档:https://developer.aliyun.com/mirror/maven ```xmlaliyunmaven * 阿里云公共仓库 https://maven.aliyun.com/repository/public
<a name="yfedv"></a>
## 2、配置jdk1.8
```xml
<!-- 全局jdk配置,settings.xml -->
<profile>
<id>jdk1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>