文章目录
Maven原理
一、Maven项目结构
1. Maven构建工具
项目依赖管理
管理原本分散在项目各个角落的的项目信息(项目描述、开发者列表、版本控制系统地址、缺陷管理系统地址等)
免费中央仓库,衍生工具Nexus用于快速搜索,依赖包自动下载
约定优于配置(对项目目录结构、测试用例命名方式等内容有既定规则)
2. Maven项目结构
src/main/java:项目java类文件位置
src/main/resources:项目配置资源文件位置
src/test/java:项目单元测试java类文件位置
src/test/resources:项目单元测试配置资源文件位置
target:项目打包后文件所在位置
3. Maven约定优于配置
超级POM:任何一个Maven项目都隐式地继承自一个超级POM,这有点类似于任何一个Java类都隐式地继承于Object类。因此,大量超级POM的配置都会被所有Maven项目继承,这些配置也就成为了Maven所提倡的约定。
对于Maven3,超级POM在文件 $ MAVEN_HOME/lib/maven-moae-builder-x.x.x.jar中的org/apache/maven/model/pom-4.0.0.xml路径下。
首先超级POM定义了仓库及插件仓库,两者的地址都为中央仓库
http://repo1.maven.org/maven2,并且都关闭了SNAPSHOT的支持。这也就解释了为什么Maven默认就可以按照需要从中央仓库下载构件。
依次定义了项目的主输出目录、主代码输出目录、最终构件的名称格式、测试代码输出目录、主源码目录、脚本源码目录、测试源码目录、主资源目录和测试资源目录。这就是Maven项目结构的约定。
二、坐标和依赖
1. Maven坐标
Maven通过groupld、artifactld、version三个变量来唯一确定一个具体的依赖(俗称GAV)
2. Maven依赖配置
- groupld,artifactld,version:基本坐标。
- type:依赖类型,对应项目坐标定义packaging,大部分情况下不需要声明。
3. Maven依赖范围
- compile:编译依赖范围,在编译,测试,运行时都需要,依赖范围默认值
- test