Maven
坐标
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
- groupId,定义当前模块隶属的实际Maven项目
- artifactId,定义实际项目中的一个Maven模块
- version,定义当前项目所处版本,版本号定义约定: <主版本>.<次版本>.<增量版本>-<里程碑版本>
- packaging,定义Maven项目打包方式, 通常打包方式与所生成构件扩展名对应,有jar(默认)、war、pom、maven-plugin等.
依赖
- 直接依赖
- 传递依赖,依赖的依赖
版本选择原则:
- 路径最近者优先
- 第一声明者优先
依赖除了保护坐标信息外,还保护以下内容:
- scope,用来控制依赖与三种classpath(编译classpath、测试classpath、运行classpath)的关系,包含compile、provided、runtime、test、system和import
- optional,依赖是否可选
- exclusions,排除传递性依赖
查看依赖树:mvn dependency:tree
仓库
集中存储这些构件的地方
-
本地仓库: 默认地址为~/.m2/, 一个构件只有在本地仓库存在之后, 才能由Maven项目使用
-
远程仓库: 远程仓库又可简单分成两类: 中央仓库和私服(代理仓库)
-
repository表示发布版本构件的仓库
-
snapshotRepository代表快照版本的仓库
生命周期与插件
- clean:pre-clean、clean、post-clean
- default:process-resources、compile、process-test-resources、test-compile、test、package、install、deploy
- site:pre-site、site、post-site、site-deploy
生命周期的阶段phase与插件的目标goal相互绑定, 用以完成实际的构建任务
mvn compile:compile
,冒号前是插件前缀, 后面是该插件目标
聚合继承
通过在一个打包方式为pom的Maven项目中声明任意数量的module以实现模块聚合 聚合POM放在项目目录的最顶层, 其他模块作为聚合模块的子目录 聚合POM存放公共配置,子模块POM存放定制化配置