一、基础知识点
- 运行mvn clean install 会把依赖下载到本地仓库,并且先执行package命令,再执行install命令。将包安装到Maven本地仓库,供本地其他的Maven项目使用
- 打包的后的jar名是以artifactId + version (也可自己使用name,最后打包出来的包,name.war)
- Maven3 创建项目骨架命令:mvn archetype:generate
- 针对依赖可选时(两个数据库依赖时),< optional >标记依赖是否可选,只对当前项目产生影响,当其他项目依赖于次项目,此依赖不会传递。
- < scope > 依赖的范围:compile 、test 、provided 、runtime 、 system
- < exclusions >用来排除传递性依赖(比如传递依赖中有SNAPSHOT(快照不稳定版本))
- 查看当前项目已解析依赖:mvn dependency:list/tree
- 分析项目依赖: mvn dependency:analyze 该结果有两个重要的部分:
Used undeclared dependencies 意指项目中使用到的,但没有显示声明的依赖。这种依赖存在潜在风险,这些依赖是通过直接传递依赖传递进来的,当升级直接依赖,这些依赖的版本也会跟着变化,有可能导致当前项目出错。
Unused declared dependencies意指项目中未使用,但显示声明的依赖。 - Maven的生命周期是抽象的:项目的清理,编译,测试,打包,集成测试,验证,部署和站点生成等。具体实现是由插件实现的。
- maven deploy:将最终的包复制到远程仓库,供其他开发人员和maven项目使用
- 生命周期绑定插件,除了内置绑定之外,用户也可以自己选择将某个插件目标绑定到生命周期的某个阶段上,在pom文件的< plugins >里面指定
- maven在pom文件中添加插件时,应该一直显示地设定版本,不显示设定的话,maven3会自动设定release(最新的非快照版本),maven2则使用latest(最新的版本)
- 聚合:多模块的情况下在这些模块的上级中配置,实现一次命令构建多个模块
- 继承:在中配置要继承的父模块的坐标、等.在父pom中有< dependencyManagement >来帮助管理依赖来帮助管理插件
- 反应堆:在一个多模块项目中,反应堆是指所有模块组成的构建结构。对于单模块的项目,反应堆就是该模块本身。对于多模块来说,反应堆就包含了各模块之间的依赖和继承关系,从而能够自动计算出合理的模块构建顺序
- 私服:一种衍生出来的特殊的maven仓库;作用:降低*仓库负荷、节省外网带宽、加速maven构建、自己部署构件等;三种maven仓库管理软件:Archiva、Artifactory、Nexus;
- mvn命令跳过测试运行: mvn package -DskipTests
- mvn命令跳过测试编译、运行: mvn package -Dmaven.test.skip=true
- mvn运行单个测试用例:mvn test -Dtest = 类名(支持*匹配以及逗号指定多个测试用例)
- 生成测试覆盖率报告: mvn cobertura:cobertura(报告在target/site/cobertura下的index.html文件中)
- 测试报告在:target\surefire-reports中
- mvn package只打包主代码和资源文件,不包括测试代码
- 打包方式:在pom文件中的项目坐标下war(不写默认是jar包)
- <artifactId.version>1.0.0</artifactId.version>进行pom文件中的统一版本控制
- 本地插件库的位置在c盘的.m2\repository\org\apache\maven\plugins
- 分清版本管理和版本控制:版本管理是指项目的整体版本的演变过程管理,如从1.0.0-SNAPSHOT到1.0;版本控制是指借助版本控制工具追踪代码的每一个变更。
- maven版本号约定:<主版本>.<次版本>.<增量版本>-<里程碑版本>
主版本表示项目的重大架构变更
次版本表示较大范围的功能的增强和变化及修复
增量版本一般表示重大BUG的修复
里程碑版本表示某一个版本的里程碑,往往表示不是很稳定,还需要很多测试 - maven两个常用的内置属性 : b a s e d i r 项 目 根 目 录 , 即 包 含 p o m . x m l 文 件 的 目 录 ; {basedir}项目根目录,即包含pom.xml文件的目录; basedir项目根目录,即包含pom.xml文件的目录;{version}表示项目版本
- ${project.build.sourceDirectory}:项目的主源码目录,默认src/main/java
- ${project.build.testSourceDirectory}:项目的测试源码目录,默认src/test/java
- ${project.build.directory}:项目构建输出目录,默认target/
- ${project.build.outputDirectory}:项目主代码编译输出目录,默认target/classes
- ${project.build.testOutputDirectory}:项目测试代码编译输出目录,默认target/testclasses
- 可以通过,在项目的配置文件,java代码中可以使用${}对中的属性进行引用,不过需要开启属性过滤
- 构建maven项目时的maven-archetype(原型)-quickstart就是通过插件来实现的maven-archetype(原型)-plugin
- 常用插件列表: