一、为什么使用Maven
- Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。
- 传统的方式创建项目,在不同的软件中,项目的目录会有差异,例如在Idea和Eclipse中创建同一个项目,项目结构不同。
- 使用Maven就是为了解决这个问题,使得创建的项目结构相同
- 依赖管理:引入仓库来管理Jar包,不用每个项目都要上传Jar包,将项目需要的Jar包与项目分离,减少项目内存,传输项目时接收者只需要在本地建立Maven的Jar包管理仓库即可
二、Idea配置Maven
2.1下载Maven
Maven下载界面
下载后解压
修改配置信息:本地仓库位置更改
2.2配置信息更改
2.2.1本地仓库位置更改
修改本地仓库位置:注意不能有中文路径
2.2.2远程仓库
由于初始状态本地仓库不会拥有所有的Jar包,后续需要的本地没有会从远程仓库下载
由于Maven的官方地址在国外,下载速度很慢,我们需要将镜像地址改为国内的
2.2.3环境变量配置
Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。
path中声明bin
验证配置情况:出现下面版本信息配置完成
三、Idea创建Maven工程
3.1Idea配置Maven环境
3.2Idea创建Maven项目
依赖配置文件Pom.xml
目录文件结构及作用介绍
3.3坐标介绍,pom.xml内部配置信息介绍
以下三个坐标信息只是本项目的坐标信息,仅以此介绍Jar包的依赖配置原理,本项目也拥有一个坐标信息的原因是本项目也可以打包成Jar包被别的工程项目依赖,别的项目依赖配置的时候会填写本项目的Jar包坐标信息。
实际的Jar包依赖信息写在<dependencies> </dependencies>
中
对于Jar包的依赖信息可以去官网找,直接粘贴:比如
Maven的中央仓库
配置信息填好后刷新自动下载
3.4本地仓库Jar包查找
然后进入Servlet文件夹,可以找到下载的Jar包对应的版本<version>4.0.1</version>
3.5 properties属性配置
3.6Maven命令
3.6.1直接点击执行响应的命令
3.6.2通过命令行方式执行命令
3.6.3测试按钮
3.6.4打包按钮
3.7依赖范围
有以下几种依赖范围可以选择:
!–依赖范围的设置
编译:编译阶段表明,在编译时期就能调用依赖中的类(src/main/java文件夹下)
测试:在Test测试文件中使用(src/test文件夹下)
运行\打包:包内
依赖范围设置为runtime时,编译时无法使用,运行时可以通过反射来使用
3.8依赖传递
注意:想要A项目依赖B项目,B项目必须执行安装命令,安装到本地仓库。
在项目1中添加项目2的依赖,依赖信息在项目2的pom.xm中
项目1:
3.9依赖排除与覆盖
3.10依赖链接图
3.11Maven聚合项目
- 对于一个大的软件开发项目,一般根据功能需求将整个项目拆分为多个小工程以方便管理
- A工程依赖B工程,每当B工程内部有变化时都需要重新执行install命令,以更新本地仓库中的内容,比较麻烦。-》聚合项目可以解决此问题,当项目B发生改变时,项目A能感知到变化。
3.11.1创建聚合项目
正常创建Maven工程即可。
3.11.2规范聚合项目操作
- 由于聚合项目只是用来管理子项目,一般不会用来写代码,需要删除项目中的src文件夹
- 修改,默认情况时打成jar包,但是聚合项目不回去继续宁打包操作,改成pom表示不是一个具体的包
<packaging>pom</packaging>
3. 创建子工程
4. pom.xml管理子工程
3.12Maven继承
当两个子工程都需要某一个包的时候,可以将此包放在聚合工程中,并让两个子工程继承聚合工程,就会自动获取该依赖包。
- 可以通过创建子工程的时候,设置其Parent是什么
- 也可以在pom中手动设置
在pom.xm中自动配置好
以上设置会使得父工程中所有的包都传递给子工程,当对于父工程中的某些依赖,只有个别子工程需要的时候,可以通过以下方式在父工程设置依赖。
子工程中需要引用的话再设置依赖,但不用加版本号
在父工程中对于所有子工程都需要依赖的包放在<dependencies></dependencies>
中,对于不是所有子工程都需要的依赖放在<dependencyManagement></dependencyManagement>
中