1.介绍
Maven中文是专家的意思。百度是这样介绍的:
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
2.优势
1)Convention over configuration(约定优于配置)
2)简单
3)测试支持
4)构建简单
5)CI(持续集成,不理解可以百度)
6)插件丰富
3.下载安装配置
可以参考:https://blog.csdn.net/rensheng_ruxi/article/details/106451803
1)认识Maven目录文件
bin:命令
boot:classloder 类加载器框架
conf:设置(settings.xml 全局配置文件)
lib:用到的jar(超级pom:model-builder.jar)
2)认识settings.xml文件内容(各项配置均有示例,可参考示例配置自己的settings.xml)
localRepository:本地仓库(配置后,Maven根据配置路径存放依赖jar包)
mirrors:国内Maven库(配置国内镜像库,会比中央仓库下载速度快一些)
pluginGroups:插件(配置后,将插件放入Maven中管理)
proxies:代理
server:私服登录信息
profiles:配置环境(测试,正式,通过命令**来运行不同的环境)
3)配置用户settings.xml
4.新建Maven项目
可以参考:https://blog.csdn.net/rensheng_ruxi/article/details/106557959
项目结构也是约定优于配置
1)认识pom.xml
modelVersion:来源于超级pom
groupId:公司域名
artifactId:功能命名
version:版本号
packaging:打包方式(jar,war,maven-plugin,maven-archetype等)
properties:项目参数(一般出现在父pom)
dependencyManagement:约定只能出现在父pom中(作用:统一版本号,做版本控制;声明,例如统一配置jdbc)
dependency:依赖
(1)type:默认jar
(2)scope:什么时候用?会不会打到包里?作用优化项目
compile:编译 例如:spring-core
test:测试
provided:编译,不会打包 例如:servlet
runtime:运行时,运行时有效,编译不用,会打包,例如:JDBC驱动实现
system:本地jar,例如:短信jar
具体的会不会打包,可以自己试试,或参看下面的生命周期介绍
(3)exclusions:排除包
5.依赖传递(了解)
第一列表示直接依赖的scope,第一行表示间接依赖的scope,查看依赖树:mvn dependency:tree >a.txt
6.依赖仲裁
1)最短路径法
2)加载先后原则
7.生命周期 lifecycle/phase/goal(重要)
1)A Build Lifecycle is Made Up of Phases
2)A Build Phase is Made Up of Plugin Goals
注意:插件没有生命周期,插件的运行主要看将插件挂载在哪里
8.版本管理(沟通好)
1.0-SNAPSHOT:不稳定版本,不可发布
1.0-RELAESE:稳定版本,发布版本
发布时,更新版本:删除本地仓库的jar或mvn clean package -U(强制拉一次)、
版本结构:主版本号.次版本号.增量版本号-<里程碑版本>
9.常用命令
mvn compile:编译
mvn clean:删除target
mvn test:运行test case junit/testNG
mvn package:打包(根据packaging)
mvn install:将包安装到本地
mvn deploy:将本地jar发布到remote
10.常用插件
地址1:https://maven.apache.org/plugins/
地址2:http://www.mojohaus.org/plugins.html
1)fingbugs:静态代码检查(运行:mvn fingbugs:findbugs)
2)versions:统一升级版本(mvn versions:set -DnewVersion=1.1)
3)sources:打包源代码
4)assembly:打包zip,jar,war
5)tomcat
待续......