花了一天看完,整理内容如下:
(1)maven坐标:
groupId,artifactId,version,packaging,classfilier.
(2)scope依赖范围:
2.1:
maven有三个classpath对应各自的依赖范围如下:
编译(A),测试(B),运行(C)
compile:A,B,C
test:B
provider:A,B
runtime:B,C
system(本地):A,B
2.2:
依赖范围的传递
当第二直接依赖范围是compile,传递行依赖范围和第一直接依赖的范围一致
当第二直接依赖范围是provided,只传递provided
当。。。是test,依赖不传递
当。。。是runtime,传递性除compile变成runtime外,其他都与第一直接依赖一致。
2.3
依赖调节:
依赖重复时首先路径最近者优先,其次第一申明者优先。
(4)三个生命周期和插件执行
4.1
clean 清理项目
default 构建项目
site 建立项目站点
4.2
maven支持通过mvn命令激活生命周期阶段(通过phase的值绑定),从而执行那些绑定在生命阶段的插件目标
还支持直接从命令行调用插件目标。
4.3
生命周期内置插件绑定和具体任务
default生命周期举例:
生命周期阶段 插件目标 执行任务
process-resources maven-resources-plugin:resources 复制主要资源到主输出目录
compile maven-compiler-plugin:compile 编译主代码到主输出目录
test maven-surefire-plugin:test 执行测试用例
package maven-jar-plugin:jar 创建项目jar包
install maven-install-plugin:install 将项目输出构建安装到本地仓库
deploy maven-deploy-plugin:deploy 将项目输出构建部署到远程仓库
4.4
显示依赖关系的命令:
mvn dependency:list:显示全部依赖
mvn dependency:tree:显示树形依赖关系
mvn dependency:analyze:会提示used undeclared dependencies和unused delared dependencies
(5)常见插件:
maven-compiler-plugin:编译
maven-surefire-plugin:测试
maven-release-plugin:版本发布
maven-site-plugin:站点发布
(6)maven提供聚合和继承的用法
(7)nexus构建宿主或者代理仓库,hudson实现自动构建等。
(8)约定大于配置