一,Maven
1.1 概念
Maven 是一个基于项目对象模型(pom.xml)概念的纯Java开发的项目管理工具
1.2 作用
管理jar包:项目越大,需要的jar包就越多,可以通过maven对这些jar包统一管理
解决了jar包使用的繁琐:
普通项目使用jar需要经历:寻找jar包、下载jar包、导入jar包
maven项目使用jar包只需要在pom.xml中使用jar包的坐标(GAV)引入即可
节省空间: 使用maven通过坐标引入依赖,不需要在每一个项目中都存放jar包,只需要根据GAV能定位到jar包在仓库中的位置即可
统一了jar包的版本:如果每个人的jar包版本不同,或者jar包的版本升级了,那么只需要在pom.xml中修改版本号就可以统一版本
1.3 下载、安装、环境配置
下载:Maven – Download Apache Maven
安装:解压即可
maven的目录
1.bin:包含maven的执行文件
2.boot:包含plexus-classworlds-2.5.2.jar包,这个jar包的作用是maven可以通过它来加载自己的类库
3.lib:包含maven运行时所需要的依赖
4.conf:包含settings.xml配置文件
配置环境:
测试环境:在cmd中输入
mvn -v
1.4 配置maven
1.4.1 配置本地仓库
必须手动配置maven在当前计算机中的本地仓库
在conf目录下的settings.xml中,配置如下内容:
<localRepository>C:\mine\Java\maven\maven_repository</localRepository> 标签体内写本地仓库的的根目录
1.4.2 配置maven所依赖的jdk
在conf目录下的settings.xml中,配置如下内容:
<profiles> <profile> <id>myjdk1.8</id> <activation> <jdk>1.8</jdk> </activation> </profile> </profiles> <activeProfiles> <activeProfile>myjdk1.8</activeProfile> </activeProfiles>
1.4.3 配置公共仓库
中央仓库在国外,下载依赖的速度较慢,所以都要配置一个国内的公共仓库代替中央库来下载所需依赖
<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>
1.5 maven仓库
本地仓库
在settings.xml文件中使用
localRepository
标签进行配置,所有使用过的依赖都会自动下载到本地仓库中,可以反复使用
远程仓库
中央仓库,由maven提供,不需要配置,maven中已经默认配置了中央库的地址
中央库的地址:Central Repository:
所有jar包的gav坐标:https://mvnrepository.com/
公共仓库
中央仓库在国外,下载依赖的速度较慢,所以都要配置一个国内的公共仓库代替中央库来下载所需依赖
<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>注:当在pom.xml文件中引入了某个jar包的依赖时,会先在本地仓库中查找是否存在,如果没有则去公共仓库(配置了的话),如果公共仓库中有,则将公共仓库中的依赖下载到本地仓库,如果公共仓库中也没有则去中央库下载到本地仓库。
1.6 在idea中配置maven
1.7 idea中创建maven工程
同步依赖:
maven项目的结构:
1.src/main/java:编写java代码
2.src/main/resources:存放配置文件
3.src/test/java:测试代码
4.pom.xml:project object model,它是maven项目的核心文件,定义了依赖的声明、定义了项目的结构
1.8 依赖的生命周期
compile:默认值,适用于测试、编译、运行、打包阶段
provided:适用于测试、编译阶段
runtime:适用于测试、运行阶段
test:适用于测试、编译阶段
system:表示当前依赖只在本地库中查找
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> <scope>runtime</scope> </dependency>
1.9 Maven的指令
clean:删除target目录
compile:编译当前项目中的类,生成target目录
package:将当前项目打包成一个jar/war包,存储在当前项目的target目录中
install:将当前项目打包成一个jar/war包,存储在本地库中
1.10 聚合工程
一个项目可以有三种不同的打包方式:
jar:JavaSE工程
war:web工程
pom:聚合工程,将其他项目作为当前项目中的一个模块
<groupId>com.qf</groupId> <artifactId>maven</artifactId> <version>1.0-SNAPSHOT</version> <!-- 聚合工程 --> <packaging>pom</packaging>
创建聚合工程
注:要使用其他Module中类,需要在当前工程的pom.xml文件中,引入它的依赖