Maven
(1)什么是Maven
-
项目管理工具 它包含了
-
①一个项目对象模型 (POM Project Object Model)
-
②一组标准集合
-
一个Maven的项目 , 它的目录结构是固定的
-
---src文件夹(源码): ---main : (主工程代码) ---java : 主工程代码 ---resources : 主工程需要使用的配置文件 ---webapp : web项目的资源目录(jsp,html,WEB_INF...)只有 ---test : (测试代码) ---java : 测试代码 ---resources : 测试需要使用的配置文件 ---pom.xml文件(项目的核心配置文件)
一个java项目
-
-
-
③一个项目生命周期 (Project Lifecycle)
-
④一个依赖管理系统 (Dependency Management System) :
-
通过配置的形式来去标识我们项目所需要的jar包 , 插件的信息
-
⑤用来运行定义在生命周期阶段 (phase) 中插件 (plugin)目标 (goal)的逻辑
-
(2)Maven有什么作用
- 我们在开发比较大型的项目的时候 , 往往要导入大量jar包 , 很费时间 , 而且经常会发生 jar冲突 , 版本冲突等问题
- Maven可以帮我们管理项目的生命周期
- Maven可以帮助我们去测试
- Maven可以帮我们去把项目去部署到服务器
(3)Maven安装使用
-
Maven的文件都是什么 ?
- ①bin : 放的是可执行文件
- ②boot : Maven的启动器
- ③conf : Maven的配置文件 Settings.xml文件 最重要
- ④lib : Maven执行的一些 依赖和jar包
-
配置
- 配置MAVEN_HOME : D:\Maven
- 配置PATH : %MAVEN_HOME%\bin
-
仓库 :
-
分类 :
-
本地仓库 : 存储在本地的仓库 , 项目使用的插件或jar包 , 优先从本地仓库找
-
远程仓库 : 如果本地仓库没有的jar包或插件 , 默认去远程仓库中下载 , 远程仓库可以在互联网内也可以在局域网内 (私服)
-
中央仓库 : 在Maven软件中内置了一个远程仓库地址 ,
http://repo1.maven.org/maven2 , 它是中央仓库 , 服务于整个互联网 , 它是由Maven团队自己维护 , 里面存储了非常全的jar包 , 它包含了世界上大部分流行的开源项目构件 (官服)
-
-
配置本地仓库 :
- 在conf中有一个Settings.xml 文件 : 默认的本地仓库路径如下
- 更改下边的路径为自己想创建的路径 , 即可自定义仓库
-
使用阿里云的仓库
-
在Settings.xml 文件中搜索 , 将下边的代码粘贴进去
-
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
(4)Maven的常用命令
① compile (编译)
-
//在控制台输入 : mvn compile //作用 : 将java文件 编译成字节码文件
② clean (清除)
-
//在控制台输入 : mvn clean //作用 : 将字节码文件删除
③ package (打包)
-
//在控制台输入 : mvn package //将web文件打包为war包 //同时还能编译
④ install (将项目安装到本地仓库)
-
//在控制台输入 : mvn install //将项目安装到本地仓库
(5)Maven的生命周期
- (1)Clean Lifecycle : 在进行真正的构建前进行一些清理工作
- (2)Default Lifecycle : 构建的核心部分 编译 , 测试 , 打包 , 部署等
- 同一套生命周期中 , 执行后边的操作 , 会自动执行前边的所有操作
- (3)Site Lifecycle : 生成项目报告 , 站点 , 发布站点 (一般并不常用)
(6)在IDEA中配置使用Maven
①配置Maven

然后就可以使用Maven了
②使用Maven
<!-- 打包方式
1.jar java项目的包 (这个是默认值 不显示)
2.war web项目
3.pom -->
<!-- <packaging>jar</packaging>-->

1.不使用骨架创建java项目:
- (1)新建一个模块 ,
- (2)选择maven (不勾选)
- (3)书写项目坐标
2.使用骨架创建java项目
(如果没有使用过骨架创建过项目 , 第一次会下载很多东西 )
- (1)新建一个模块 ,
- (2)选择maven (勾选)
- 选择骨架 最常用的两种
- (1)java
- (2)webapp
- (3)书写项目坐标
- 再次创建的时候 , 模板使用本地的不使用网络的 , 在创建的时候 , 添加一行属性即可 ,
3.编写代码
- 直接在main包下的java包下写即可
- 使用Maven命令 , 在左边栏有一个Maven按钮 :
- 其中Lifecycle是生命周期操作
- Plugins是插件
-
4.如何导入jar包 (导入依赖)
-
通过坐标来标识依赖
-
<!--导入依赖--> <dependencies> <!--中间加具体的依赖坐标--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.6</version> <!--版本号--> <type>jar</type> </dependency> <!--一次可以写入多个--> <dependency> .... </dependency> </dependencies>
-
在https://mvnrepository.com中搜索想要的jar包 , 将坐标写在pom.xml文件中即可
-
-
这时 , 再点击左边栏的Maven就会发现多了一个 依赖目录
-
-
快捷键 : Alt + Ins 选择 Dependency Template 即可
-
5.如何导入插件
-
<!--导入插件--> <build> <plugins> <!--这是一个编译插件 用来设置编译时的版本--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <!--配置参数--> <target>1.8</target><!--指定生成的字节码文件使用的版本--> <source>1.8</source><!--编译使用的版本--> </configuration> </plugin> </plugins> </build>
-
快捷键 : Alt + Ins 选择 Plugin Template 即可快速生成
-
6.不使用骨架搭建web应用
(1)要在pom.xml文件中增加一条 , 将打包方式修改为war包的形式
<packaging>war</packaging>
-
(2)注意这个配置不要在中
<plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <!-- 访问端口 : 可以修改--> <path>/</path> <!-- 访问路径 : 修改Tomcat部署当前项目的虚拟目录--> </configuration> </plugin> </plugins>
等他下载完成即可
(7)Maven中的坐标
- 被Maven管理的资源的唯一标识
-
groupId : 组织名称 : (比如公司的域名 , 倒着写) (写的是仓库中存放这个资源的路径)
-
D:\Maven\cangku\org\apache\tomcat\maven
-
atifactId : 模块名称 (路径下的包名)
-
-
version : 版本号 (包里边使用那一个版本)
-
-
(8)自己设置执行命令
(1)点击如图所示

(2)点击Maven 然后点击添加

(3)输入功能名 , 项目路径 , 执行的是哪个功能
使用scope 确定jar的使用范围
- 作用 : 规定什么时间用什么jar包 , 避免jar包冲突
- 例如 : 使用servlet.api时 , 在运行web项目时 , 会和Tomcat发生冲突 , 造成500错误
- 设置这个值 , 可以选择这个jar包在那个环境(也就是那个运行阶段)下使用
- 将来在打包的时候 , 会将这些jar包打包进war包中 , 当时有些jar包并不需要打包进去 , 所以就需要设置值来限制这个范围
在导入依赖之后 , 会有三个值
而scope默认是compile (是不显示的 , 要是想要设置 , 就需要自己手动给添加上去)
如果 : java环境中自带的有这个包 , 那么在编译的时候就不会报错 , 但是打成war后就要找对应的jar包 , 这个时候就需要设置runtime了
成500错误
- 设置这个值 , 可以选择这个jar包在那个环境(也就是那个运行阶段)下使用
- 将来在打包的时候 , 会将这些jar包打包进war包中 , 当时有些jar包并不需要打包进去 , 所以就需要设置值来限制这个范围
在导入依赖之后 , 会有三个值
而scope默认是compile (是不显示的 , 要是想要设置 , 就需要自己手动给添加上去)
[外链图片转存中…(img-82vr1MPS-1646802212023)]
如果 : java环境中自带的有这个包 , 那么在编译的时候就不会报错 , 但是打成war后就要找对应的jar包 , 这个时候就需要设置runtime了