导学
Maven是一个项目管理工具,在之前的课程中,我们一个项目使用了多个jar包,这对于我们来说是比较麻烦的,不同的jar包之间可能相互依赖,也有可能产生冲突。在这种情况下,如何去保证我们的jar包使用正确呢?Maven就能极好的解决这个问题。
在本节课程中,需要掌握Maven的核心特性,依赖管理以及打包方式。
Maven介绍
- Maven是项目管理工具,对软件项目提供构建和依赖管理
- Maven是Apache下的Java开源工具
- Maven是Java项目提供了统一的管理方式,已成为业界标准
日常开发痛点:
- 不同的IDE之间创建的项目结构不同,是不能互通的,eclipse中创建的项目就不能拿到idea中运行。
- 一个Java软件需要多种Jar包支持,到处下载很麻烦。
- 一个Java项目打包无外乎jar包与war包,如何采用一个更统一更方便的方式呢?
Maven核心特性:
- 项目设置遵循统一的规则,保证不同开发环境的兼容性
- 强大的依赖管理,项目依赖组件自动下载、自动更新
- 可扩展的插件机制,使用简单,功能丰富
maven依赖管理
依赖管理:
- Maven利用dependency(依赖)自动下载、管理第三方jar;
- 在pom.xml文件中配置项目依赖的第三方组件
- maven自动将依赖从远程仓库下载至本地仓库,并在工程中引用
可以在该pom.xml中添加一个dependencies的根标签。
并去https://search.maven.org中查找对应jar包的依赖
比如,我现在添加该依赖就可以下载对应的mysql连接驱动。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dodoke</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
</dependencies>
</project>
比较复杂的组件由多个jar包组合,maven对组件进行深入解析,对所有jar包进行下载。
本地仓库与中央仓库
在我们使用maven之前,其实我们已经去设置了中央仓库为阿里云的镜像仓库,而且也设置了本地仓库为c盘之外的其他盘符。
那么,究竟什么是maven的中央仓库与本地仓库呢?
当我们使用maven的时候,我们可以通过pom.xml下载对应的jar包。其实maven会经历如下的步骤:
- 解析pom.xml,分析要下载的内容
- 查看本地仓库,查找是否已经下载过该jar包
- 如果没有该jar包,将前往中央仓库下载该jar包到本地仓库
- 在下载好以后或本地存在该jar,则自动的将该jar包添加到项目中
其实在之前的设置中,我们设置了maven默认下载的阿里云提供的中央仓库中保存的jar包。但是这在我们正式开发中不怎么建议。
通常我们会设置单独某个项目采用私服(代理服务器,保存有备份的jar包,最有名的就是阿里云的私服)的仓库,比如我们会在pom.xml中设置仓库地址。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dodoke</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun</name>
<!-- 可能阿里云仓库的地址会发生变化,需要查找最新的地址 -->
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
</dependencies>
</project>
这样就可以设置单个项目的jar下载,优先从阿里云私服下载,如果私服没有,才从maven官网下载。