Maven是一个
基于项目对象模型(POM)用于进行项目的依赖管理、生命周期管理
的工具软件,
核心功能:
- 依赖jar包管理
- 项目生命周期管理
- 聚合工程
安装配置
Maven是基于Java语言进行开发的,因此依赖JDK(建议JDK1.7+)
-
无需安装,解压,开箱即用
目录结构:- bin 存放指令文件(Maven提供了—个mvn指令)
- boot 包含了—个类加载框架的jar文件
- conf 包含了Maven的核心配置文件settings.xml
- lib 存放了maven运行所需的jar文件
-
配置环境变量
项目结构
project(项目名称)
– src
– main(存放项目的源文件)
– java(存放java代码,相当于传统项目中的src目录)
– resources(存放配置文件和静态资源的日录,相当于传换项目的web目录)
– test(存放项目的单元测试代码)
–pom.xml
项目依赖管理
流程
- 在项目中的pom. xmI配置依赖
- maven读取项目的pom.xml
- maven检查本地仓库是否有项目所需的jar,如果有则直接引入到项自中
- 如果本地仓库没有项目所需依赖,maven会连接远程仓库进行下载(网格)
- maven将从远程仓库下载的jar文件先保存到本地仓库,再从本地仓库引用到项目中
仓库介绍
本地仓库
:就是本地计算机上的某个文件夹(可以是自定义的任何文件夹)远程仓库
中央仓库
:maven官方提供的仓库,包含了所需的一切依赖(免配置)公共仓库
:除了中央仓库以外的第三方仓库都是公共仓库,如aliyun(需配置)私服
:企业搭建的供内部使用的maven仓库
Maven仓库配置
在 /conf/settings.xml
中进行配置
- 配置本地仓库
<localRepository>D:\software\install\apache-maven-3.8.1\repo</localRepository>
- 配置公共仓库
<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors>
- 配置私服
私服
企业搭建供内部使用的一个Mawen仓库
- 开发者需要依赖直接从私服下载
- 私服可以实现企业内部依赖的共享:当企业开发了一个通用插件(jar),可以发布到私服,可以连接到当前私服的其他开发者就可以共享这个插件
私服搭建
我们可以通过专门的Maven仓库管理软件来搭建私服。例如:Apache Archiva、Nexus
- 下载Nexus:百度网盘
- 解压Nexus
- 安装并运行
- 进入
nexus-2.14.5-02/bin
目录 - 管理员身份打开cmd命令行,执行指令
- 进入
- 登录nexus
- 启动nexus
- 浏览器打开:http://localhost:8081/nexus
- 右上角点击
Log In
账号:admin 密码:admin123
- 仓库类型
group
:不是一个具体的仓库,是一个仓库组(逻辑)hosted
:私服中的存储依赖文件(物理)proy
:代理仓库,表示—个仓央仓库/公共仓库(逻辑)
配置代理仓库
配置私服
在maven的 settings.xml
文件的 servers标签中
<!-- 配置连接私服所需的帐号和密码 -->
<servers>
<server>
<id>nexus-public</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!-- repository 和 pluginRepository 的 id 子标签的值,要和上面配置的scrver的id子标签的值一致 -->
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus-public</id>
<name>nexus release snapshot repository</name>
<url>http://192.168.10.125:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus-public</id>
<url>http://192.168.10.125:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- activeProfiles配置激活profile -->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>