Maven的核心概念
- 一、Maven工程中约定的目录结构
- 二、仓库管理
- 🎶仓库的概述
- 🎶仓库的分类
- 本地仓库所在位置的设置
- 重写更改本地仓库路径,不使用默认路径有什么好处呢?
- 🎶Maven对仓库的使用
- 三、POM
- 工程的唯一标识
- 依赖(dependencies和dependency)
- 设置打包类型(packaging)
- 四、Maven的生命周期
一、Maven工程中约定的目录结构
工程名/项目名/(根目录)
|---/src
|---/main (存放主程序的Java代码和配置文件)
|---/java(存放程序包和包中的.java文件)
|---/resources(Java程序中要使用的配置文件)
|---/test(存放测试程序的代码和文件,可以没有,非强制)
|---/java(存放测试所用到的程序包和包中的.java文件)
|---/resources(测试Java程序中要使用的配置文件)
|---/pom.xml文件 (maven的核心文件,maven项目中必备的)
🙌一般用maven
部署的项目的目录结构就是这样的,按约定去部署自己的项目,方便自己查找相关文档,方便了解项目。
二、仓库管理
🎶仓库的概述
在
Maven
的术语中,仓库(Repository)是一个位置(Place),例如目录,可以存储所有的工程 jar 文件、library jar 文件、插件 或 任何其他的工程指定的文件。
🎶仓库的分类
1. 本地仓库:个人计算机的一个文件夹,里面存放各种 jar 包(项目使用的 jar 或是maven使用的插件(各种jar);
2. 远程仓库:在互联网上的,使用网络才能使用的仓库:
a. 中央仓库:所有开发人员共享使用的一个集中的仓库(https://mvnrepository.com/);
b. 中央仓库的镜像:中央仓库的备份,在各大洲,重要的城市一般都有镜像(它的存在是为了减轻中央仓库所在服务器的压力);
c. 私服:在公司内部,在局域网中使用的,不对外使用的。
本地仓库所在位置的设置
在所满足的
maven
子目录下的conf
目录下的setting.xml
扩展性标记语言文件内:里面有个
localRepository
(翻译为本地存储库)标签:
重写更改本地仓库路径,不使用默认路径有什么好处呢?
可以减少C盘内存的消耗,虽然 maven 本身很小,但有时下载的 jar 包所需内存还是蛮大的,所以最好是
在 setting.xml 文件下更改一下本地仓库的路径。
🎶Maven对仓库的使用
在Maven
构建某项目中,如果需要某些插件:
查找顺序:
1. 先到Maven的本地仓库中查找,如果找到可以直接使用,如果没找到会自动连接外网;
2. 到远程中央仓库中查找,如果远程仓库中能找到,则先把所需要的插件下载到本地仓库,
然后再使用,如果没有外网而且远程仓库也找不到,则构建失败/报异常。
三、POM
POM(Project Object Model)工程对象模型。Maven把一个项目的结构和内部抽象成一个模型,它是使用Maven工作时的基本组件,是一个xml文件,在工程的根目录下,文件名为pom.xml。
工程的唯一标识
在创建 POM 之前,必须确定工程组(
groupId
)、名称(artifactId
)和 版本(version
),这是工程的唯一标识。这三个元素生成一个基本坐标,在众多的 maven 项目中可以唯一定位到仓库中的
某一个项目。
groupId:组织id,工程组的标识。一般格式为:公司倒写的域名+项目名(com.baidu.appollo);
artifactId:工程的标识,工程的名称,项目的名称,对应着 groupId 的子项目;
version:工程的版本号,在 artifact 的仓库中,用来区分不同的版本。如果还在开发,是不稳定版本,通常在版本后带 -SNAPSHOT。(snapshot:快照)。
MySQL连接驱动8.0.31的定位:
依赖(dependencies和dependency)
不难看出,dependencies 是复数,可以设置多个 dependency 为子标签设置多个依赖。而标签dependency 是通过坐标来定位的。由上面的 MySQL 驱动不难看出是怎么个意思。为了一个项目可以构建或者运行,依赖 jar 包是不可避免的。也可以看看下面的servlet 依赖。
scope 标签是用来管理依赖的部署的,确定依赖的范围。
设置打包类型(packaging)
packaging 标签可用来设置打包的类型,默认是 jar,当需打包web 应用时,可将打包类型设为 war。
四、Maven的生命周期
Maven 生命周期就是为了对所有的构建过程进行抽象和统一。包括项目的清理、编译、测试、打包、部署等构建步骤。
Maven 的三大生命周期:
Clean
(清理项目)对应命令==》 mvn cleanDefault
(构建项目,核心)包括编译、测试、打包、部署等操作,对应命令==》mvn compile
;mvn test
;mvn package
;install
.Site
(生成项目站点)生成和发布Maven 站点,统计数据,自动生成。