文章目录
1. 使用Maven的好处
- jar包的管理方便
- 一键构建,从编译-----测试-----运行----打包-------部署整个过程都交给maven管理。
2. Maven的安装
2.1下载
百度搜索maven
进入官网选择download
找到Binary zip archive apache-maven-3.6.2-bin.zip,点击下载
2.2 安装
解压到不含有空格或中文的路径下,看它的结构
配置环境变量
从控制面板->所有控制面板项->系统->高级系统设置->高级->环境变量
首先你的电脑得先安装java并且配置java环境变量,这里已经配置好了。
配置MAVEN_HOME变量,变量值就是你的maven安装路径。
将 %MAVEN_HOME%/bin 加入环境变量 path
运行mvn -v 看看是否安装成功,看到这个说明安装成功。
3. Maven的仓库与配置
3.1 Maven的仓库
- 本地仓库:本地存放jar包的目录。
- 远程仓库(私服):私人搭建的服务器。一般在企业内部局域网中使用。
- 中央仓库:maven内置了一个远程仓库的地址,它就是中央仓库,访问的url可以从D:\Tools\apache-maven-3.6.2\lib\maven-model-builder-3.6.2.jar\org\apache\maven\model\pom-4.0.0.xml中找到https://repo.maven.apache.org/maven2
Maven在查找jar的时遵循什么样的顺序呢?
- 优先查找本地;
- 本地找不到,则从私服上查找,找到后下载到本地仓库;
- 私服上找不到,则从中央仓库查找,找到后下载到私服,最后下载到本地仓库;
最终maven都会把jar下载到本地仓库,maven工程再引用本地仓库的jar包。
3.2 本地仓库配置
打开安装路径下conf/settings.xml,加入E://9_Repository//repository
3.3 远程仓库的配置
国内因为墙的原因,下载jar包比较慢,可以配置镜像,如下
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
4. Maven工程的标准目录结构
目录结构规范
5. Maven命令
- clear
clean是maven工程的清理命令,执行 clean会删除target目录及其目录下所有内容。 - compile
compile是maven工程的编译命令,作用是将src/main/java下的java源文件编译为class文件并输出到target下的classes目录下。 - test
test是maven工程的测试命令 mvn test,会执行src/test/java下的单元测试类。会编译java源码,同时也编译测试目录下的java源码,接着会运行测试类里的测试方法。 - package
package是maven工程的打包命令, 对于java工程执行package打成jar包,对于web工程打成war包,工程目录下执行 mvn package。 - Install
install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库。
当后面的命令执行时,前面的操作过程也都会自动执行。
- 三套生命周期
Maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
1.Clean Lifecycle: 在进行真正的构建之前进行一些清理工作。
2.Default Lifecycle: 构建的核心部分:编译、测试、打包、部署等等。
3.Site Lifecycle: 生成项目报告、站点、发布站点。
每一个阶段都有一个对应的命令,且有相应的插件来支持命令的运行。
注:属于同一个指令周期内的指令,当后面的命令执行时,前面的命令会自动执行。
6. 使用eclipse配置maven
6.1 配置maven插件,高版本自带
6.2 Eclipse中配置仓库位置
6.3 构建索引
6.4 成功可看到仓库能展开
7. jar包作用范围scope属性
添加jar包的坐标时,还可以指定这个jar包将来的作用范围
依赖范围包括
-
compile:编译范围,A在编译时依赖B,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要,所以编译范围的依赖会被打包。
-
provided:provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用,provided依赖在编译和测试时需要,在运行时不需要,比如:servlet api被tomcat容器提供。
-
runtime: runtime依赖在运行和测试系统时候需要,但在编译的时候不需要,比如:jdbc的驱动包。由于运行时需要,所以runtime范围的依赖会被打包
-
test:test范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,比如:junit。由于运行时不需要,所以test范围依赖不会被打包。
-
system:system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中jar文件的路径,需要指定systemPath磁盘路径,system依赖不推荐使用。