《Maven实战》读后小结
Maven主要功能
- 统一并简化了项目构建过程:
- compile, clean, test, package, install…等插件一键编译、测试、打包
- 统一公共Maven仓库
- 避免去第三方网站下载,统一采用GAV形式引入外部依赖
- 提供install, deploy插件部署项目到本地仓库,远程仓库
知识小结
依赖
-
依赖范围:maven在编译、测试、运行时有三套classpath,的作用即控制依赖与这三种classpath的关系
scope classpath范围 compile 对编译、测试、运行三种classpath都有效 test 对测试classpath有效 provided 对编译、测试classpath有效 runtime 对测试、运行classpath有效 system 与provided范围一致,但是必须使用 <systemPath>
显示指定依赖路径(非Maven仓库依赖,不推荐)import 不对三种classpath产生影响,用于引入dependencyManagement配置 -
依赖传递
-
传递性依赖的依赖范围
直接依赖\传递性依赖 compile test provided runtime compile complie - - runtime test test - - test provided provided - provided provided runtime runtime - - runtime
-
-
选项依赖:
<option>
-
排除排除:
<exclusion>
-
归类依赖:
<properties>
指定version
仓库
-
构件artifact: 任何一个依赖,插件或者项目构建的输出,都可以称之为构件。
-
布局方式:任何一个构件都有其唯一坐标(GAV),根据这个坐标可以定义其在仓库内的唯一存储路径。
-
本地仓库 + 远程仓库:根据GAV寻找构件时,首先查找本地仓库,本地仓库没有则查找远程仓库,如果有则下载到本地仓库再使用
- 远程仓库
- 中央仓库:Maven默认的远程仓库
- 私服:局域网内架设的私有服务器,用起代理所有外部远程仓库。内部项目可部署到私服上供其他项目使用,如公司内部仓库。
- 其他公开远程库 / 镜像:如阿里巴巴
- 远程仓库
生命周期
Maven为大多数构建步骤编写并绑定了默认插件,例如,针对编译的maven-compiler-plugin、maven-dependency-plugin、maven-surefire-plugin
等
// 模拟生命周期的模版方法抽象(default)
public abstract class AbstractBuild {
// 项目构建
public void build(){
initialize()