Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
POM(Project Object Model)︰项目对象模型
项目构建:提供标准的、跨平台的自动话项目构建
依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
统一开发结构:提供标准的、统一的项目结构
私服的作用:
- 保存具有版权的资源,包含购买或自主研发的jar 中央仓库中的jar都是开源的,不能存储具有版权的资源
- 一定范围内共享资源,仅对内部开放,不对外共享
什么是坐标?
Maven中的坐标用于描述仓库中资源的位置
Maven坐标主要组成
Maven坐标的作用
- 使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成
本地仓库配置
<localRepository>${user.home}/.m2/repositorylocalRepository>
当前目录位置为登录用户名所在目录下的.m2文件夹中
<localRepository>D: \maven\repositorylocalRepository>
当前目录位置为D:\maven\repository文件夹中
远程仓库配置
<repositories>
<repository>
<id>centralid>
<name>Central Repositoryname>
<ur1>https://repo.maven.apache.org/maven2ur1>
<layout>defaultlayout>
<snapshots>
<enabled>falseenabled>
snapshots>
repository>
repositories>
镜像仓库配置
<mirrors>
<mirror>
<id>nexus-aliyunid>
<mirrorof>centralmirrorOf>
<name>Nexus aliyunname>
<ur1>http: //maven.aliyun. com/nexus/content/groups/publicurl>
mirror>
mirrors>
全局setting与用户setting区别
Maven工程目录结构
mvn compile # 编译
mvn clean # 清理
mvn test # 测试
mvn package # 打包
mvn install # 安装到本地仓库
mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name }
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -
DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0 .0.1-snapshot -
DinteractiveMode=false
mvn archetype: generate -DgroupId=com.itheima -DartifactId=web-project -
DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -
DinteractiveMode=false
依赖指当前运行所需要的jar,一个项目可以设置多个依赖
格式:
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
dependency>
dependencies>
依赖具有传递性
依赖传递中的冲突问题
可选依赖指对外隐藏当前所依赖的资源―—不透明
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactid>
<version>4.12version>
<optional>trueoptional>
dependency>
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本——不需要
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactid>
<version>4.12version>
<exclusions>
<exclusion>
<groupId>org.hamcrestgroupId>
<artifactId>hamcrest-coreartifactId>
exclusion>
exclusions>
dependency>
依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
作用范围
- 主程序范围有效 (main文件夹范围内)
- 测试程序范围有效 (test文件夹范围内)
- 是否参与打包 (package指令范围内)
scope | 主代码 | 测试代码 | 打包 | 范例 |
---|---|---|---|---|
compile(默认) | Y | Y | Y | log4j |
test | Y | junit | ||
provided | Y | Y | servlet-api | |
runtime | Y | jdbc |
依赖范围传递性
Maven构建生命周期描述的是一次构建过程经历经历了多少个事件
Maven对项目构建的生命周期划分为3套
clean
:清理工作
default
:核心工作,例如编译,测试,打包,部署等
site
:产生报告,发布站点等