maven
1. 概述:
Maven 是一个项目管理工具,它包含了一个项目对象模型(POM: Project Object Model),
一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),
和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。
2. maven功能
1. 是一个跨平台的项目管理工具。
1. 主要服务基于Java平台的项目构建,依赖管理,项目信息管理
1. 项目构建
清理(clean) --> 编译(compile) --> 测试(test) --> 打包(package)--> 安装(install)-->发布(deploy)
2. 依赖管理
* 自动下载项目需要的jar包
3. 项目信息管理
1. 项目名称描述,开发人员管理等等
2. 使用maven的优点
1. 解决传统的管理jar依赖的问题
* 解决jar冲突
* 解决jar依赖
* 解决jar体积过大问题,jar文件放在仓库即可
* maven可指定jar依赖范围
2. 安装:
1. 下载maven
下载地址 :http://maven.apache.org/download.cgi
2. 解压
1. 解压后的目录
* bin:含有mvn运行的脚本
* boot:含有plexus-classworlds类加载器框架
* conf:含有settings.xml配置文件
* lib:含有Maven运行时所需要的java类库
* LICENSE
* NOTICe
* README.txt
| * 解压路径尽量不要包含中文空格
3. 配置环境变量
1. MAVEN_HOME : D:\maven\apache-maven-3.5.2-bin
|*小贴士:路径是你自己的maven路径
4. 设置系统环境变量Path
1. 在Path中追加: %MAVEN_HOME%\bin
5. 检验是否安装成功
1. 打开 cmd 输入:mvn -version
* 若出现下图则成功
6. 配置本地仓库
1. Maven的默认本地仓库在:${user.home}/.m2/repository;这地址可以在settings.xml中修改指定自定义的仓库路径。
2. 自定义仓库路径:找到安装目录下的conf文件夹里的settings.xml文件,修改如下:
|*小贴士 红框中的路径必须存在
3. maven项目结构
src/main/java | 存放项目的.java文件(开发源代码) |
---|---|
src/main/resources | 存放项目配置文件,如果没有配置文件该目录可无,如spring, hibernate配置文件 |
src/main/webapp | 存放web项目资源文件(web项目才有) |
src/test/java | 存放所有测试.java文件(测试源代码) |
src/test/resources | 测试配置文件,如果没有配置文件该目录可无 |
target | 项目输出位置(可无) |
pom.xml | maven项目核心配置文件 |
4. maven仓库
* Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,就称之为仓库。(仓库就是存放依赖和插件的地方)
1. 本地仓库
* Maven在本机存储构件的地方
2. 远程仓库
1. 中央仓库:包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等
* 地址:https://mvnrepository.com/
2. 私服:是一种特殊的远程仓库,它是架设在局域网内的仓库。
3. 其他公共库
5. maven坐标
1. 组成
* groupId:定义当前Maven项目隶属项目、组织
* artifactId:定义实际项目中的一个模块
* version:定义当前项目的当前版本
* packaging:定义该项目的打包方式(pom/jar/war,默认为jar)
* groupId、artifactId、version简称为GAV。
2. 获取
1. 到maven中央仓库获取
* 地址:https://mvnrepository.com/
* 网站上可以搜索具体的组织或项目关键字,之后复制对应的坐标到pom.xml中
6. maven依赖管理
1. 依赖范围
* 依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系
1. compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
2. test:测试依赖范围。只对于测试classpath有效
3. provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
4. runtime:运行时提供。例如:jdbc驱动
5. system:系统范围,自定义构件,指定systemPath;跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。
6. import:只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置。
7. maven生命周期
* Maven生命周期就是为了对所有的构建过程进行抽象和统一;包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤。
1. 清理生命周期
* clean:清除项目编译信息
2. 默认生命周期
* compile :编译
* test :测试
* package :打包
* install : 安装
* deploy :发布
3. 站点生命周期
8. maven插件使用
* Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。
* 每个插件都能实现多个功能,每个功能就是一个插件目标。Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务
1. 添加tomcat插件;以后可以针对项目快速配置多个不同端口的tomcat
* 运行时输入tomcat7:run指令
2. 修改JDK编译版本
3. 添加打包项目源码的插件;运行install命令后在仓库中有项目的源码jar包
备注:本博客乃是笔记,用于复习,若有不全,请见谅