1.1 项目管理问题
项目中jar包资源越来越多,jar包的管理越来越沉重。
1.1.1 繁琐
要为每个项目手动导入所需的jar,需要搜集全部jar。
1.1.2 复杂
项目中的jar包如果需要版本升级,就需要再重新搜集jar。
1.1.3 冗余
相同的jar在不同的项目中保存了多份。
1.2 项目管理方案
java项目需要一个统一的便捷的管理工具:Maven:
管理项目的依赖。
管理项目的构建->编写->编译->测试->打包->部署。
二、介绍
Maven这个单词来自于意第绪语(犹太语),意为知识的积累.
Maven是一个基于项目对象模型(POM)的概念的纯java开发的开源的项目管理工具。主要用来管理java项目,进行依赖管理(jar包依赖管理)和项目构建(项目编译、打包、测试、部署)。此外还能分模块开发,提高开发效率。
三、Maven安装
3.1 下载Maven
下载Maven
http://us.mirrors.quenda.co/apache/maven/maven-3/3.5.4/binaries/ |
---|
![]() |
3.2 Maven安装
3.2.1 解压
注意: 解压文件尽量不要放在含有中文或者特殊字符的目录下。
解压后,有如下目录:
`bin:含有mvn运行的脚本` `boot:含有plexus-classworlds类加载器框架,Maven 使用该框架加载自己的类库。` `conf:含有settings.xml配置文件` `lib:含有Maven运行时所需要的java类库`
3.2.2 环境变量
maven依赖java环境,所以要确保java环境已配置好 (maven-3.3+ 需要jdk7+)
maven本身有2个环境变量要配置:
`MAVEN_HOME = maven的安装目录` `PATH = maven的安装目录下的bin目录`
3.2.3 测试
查看maven版本信息
mvn -v
四、Maven配置
4.1 本地仓库
maven的conf目录中有 settings.xml ,是maven的配置文件,做如下配置:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> --> <!-- 选择一个磁盘目录,作为本地仓库 --> <localRepository>D:\Program Files\maven\myrepository</localRepository>
4.2 JDK配置
在 <profiles> 标签中 增加 一个 <profile> 标签,限定maven项目默认的jdk版本.
内容如下:
<profiles>
<!-- 在已有的profiles标签中添加profile标签 -->
<profile>
<id>myjdk</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
<!-- 让增加的 profile生效 -->
<activeProfiles>
<activeProfile>myjdk</activeProfile>
</activeProfiles>
五、仓库
5.1 概念
存储依赖的地方,体现形式就是本地的一个目录。
仓库中不仅存放依赖,而且管理着每个依赖的唯一标识(坐标),Java项目凭坐标获取依赖。
5.2 仓库分类
仓库分类如下:
仓库分类 |
---|
5.3 本地仓库
即在settings.xml 中配置的目录。
使用过了的依赖都会自动存储在本地仓库中,后续可以复用。
5.4 远程仓库
5.4.1 中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,不用任何配置,maven中内置了中央仓库的地址。
其中包含了绝大多数流行的开源Java构件。
https://mvnrepository.com/ 可以搜索需要的依赖的相关信息(仓库搜索服务)
5.4.2 公共仓库【重点
】
除中央仓库之外,还有其他远程仓库。 比如aliyun仓库(http://maven.aliyun.com/nexus/content/groups/public/)
中央仓库在国外,下载依赖速度过慢,所以都会配置一个国内的公共仓库替代中央仓库。
<!--setting.xml中添加如下配置--> <mirrors> <mirror> <id>aliyun</id> <!-- 中心仓库的 mirror(镜像) --> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <!-- aliyun仓库地址 以后所有要指向中心仓库的请求,都会指向aliyun仓库--> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors>
5.4.3 私服【了解】
公司范围内共享的仓库,不对外开放,采用局域网的方式下载。
可以通过 Nexus来创建、管理一个私服。
5.4.4 依赖下载流程
当需要依赖时,会从仓库中取查找,优先顺序为:
六、Idea-Maven
6.1 在Idea中关联Maven
在idea中关联本地安装的maven,后续就可以通过idea使用maven,管理项目啦。
在全局设置中,关联Maven |
---|
![]() |
6.2 创建Maven项目
6.2.1 新建项目
新建项目,要选择 Maven 选项
如下选项 |
---|
![]() |
6.2.2 指定项目名
设置项目名 |
---|
![]() |
6.2.3 项目位置
项目位置如下 |
---|
![]() |
6.2.4 项目结构
src/main/java 存放源代码,建包,放项目中代码(service,dao,User,....)
src/main/resources 书写配置文件,项目中的配置文件(jdbc.properties)
src/test/java 书写测试代码,项目中测试案例代码
src/test/resources 书写测试案例相关配置文件
目根/pom.xml (project object model) maven项目核心文件,其中定义项目构建方式,声明依赖等
注意:项目中的建包,建类,执行,都和普通项目无差异
项目结构如下: |
---|
![]() |
6.2.5 项目类型
根据项目类型,在pom.xml中做出对应配置,添加配置:<packaging>war/jar</packaging>
<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.qf</groupId> <artifactId>test01</artifactId> <version>1.0-SNAPSHOT</version> <!-- 打包方式,如果是java项目则用 jar, 如果是web项目则用war --> <!--<packaging>war</packaging>--> <packaging>jar</packaging> </project>
6.3 导入依赖jar
建好项目后,需要导入需要的jar,要通过坐标
每个构件都有自己的坐标 = groupId + artifactId + version = 项目标识 + 项目名 + 版本号
在maven项目中只需要配置坐标,maven便会自动加载对应依赖。删除坐标则会移除依赖
6.3.1 查找依赖
依赖查找服务:https://mvnrepository.com/ ,获得依赖的坐标,在maven项目中导入。
查找依赖坐标 |
---|
![]() |
![]() |
6.3.2 导入依赖
在项目的pom文件中,增加依赖
在项目的pom.xml文件添加依赖 |
---|
![]() |
6.3.3 同步依赖
引入坐标后,同步依赖,确认导入。
窗口右下角弹窗,刷新依赖,使新加的配置被maven加载 |
---|
![]() |