目录
Maven坐标主要组成
Maven的依赖管理和依赖范围
Maven的依赖控制与依赖排除
Maven仓库管理
仓库的分类
Maven的生命周期
Maven工程的聚合和继承
打包总结
Maven坐标主要组成
- groupId:定义当前Maven项目隶属项目
- artifactId:定义实际项目中的一个模块
- version:定义当前项目的当前版本
- packaging:定义该项目的打包方式
Maven的依赖管理和依赖范围
传递性依赖和可选依赖,排除依赖
依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
- compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
- test:测试依赖范围。只对于测试classpath有效
- provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
- runtime:运行时的依赖范围,对于运行的classpath都有效。例如:jdbc驱动?
Maven的依赖控制与依赖排除
依赖控制:控制自己的依赖的包是否往下传递
<dependency>
<groupId>cn.itcast.friend</groupId>
<artifactId>Friend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
<!-- 表示依赖的Friend是否往下传递
如果是true,表示不往下传递,如果是false,表示继续往下传递
-->
<optional>true</optional>
</dependency>
依赖排除:可以排除掉某些我们不需要的jar包
<dependency>
<groupId>cn.itcast.helloFriend</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>cn.itcast.friend</groupId>
<artifactId>Friend</artifactId>
</exclusion>
</exclusions>
</dependency>
Maven仓库管理
?何为Maven仓库?
用来统一存储所有Maven共享构建的位置就是仓库
Maven仓库布局
根据Maven坐标定义每个构建在仓库中唯一存储路径,大致为:
groupId/artifactId/version/artifactId-version.packaging
仓库的分类
Maven的生命周期
何为生命周期?
- Maven生命周期就是为了对所有的构建过程进行抽象和统一
- 包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤
Maven三大生命周期
- clean:清理项目的
- default:构建项目的
- site:生成项目站点的报告
Maven工程的聚合和继承
- 创建parent父工程
- 创建聚合工程
- 使用parent父工程管理依赖
- 测试聚合工程
打包总结
- war:需要部署到服务器的项目打war
- pom:用来统一管理依赖的父工程,打pom,聚合工程的父工程打pom
- jar:其他的情况打jar总结:
|