目录
1.说明
2.详细说明
3.Maven模型
4.Maven常用的命令
5.Maven生命周期
6.Maven坐标
7.依赖管理与依赖范围
1.说明
Maven是专门用于管理和构建Java项目的工具,它是基于项目对象模型(POM)的概念,主要功能有:
提供了一套标准化的项目结构
提供了一套标准化的构建流程(编译,测试,打包,发布)
提供了一套依赖管理机制
2.详细说明
(1)Maven提供了一套标准化的项目结构
所有的IDE构建出来的项目结构是一致的,所有IDE构建出来的项目是可以通用的。例如,eclipse创建出来的项目可以直接导入到idea中进行使用。
(2)Maven提供了一套标准化的构建流程
Maven提供了一套简单的命令来完成项目的构建。
常用命令:
mvn -v //查看版本
mvn archetype:create //创建 Maven 项目
mvn compile //编译源代码
mvn test-compile //编译测试代码
mvn test //运行应用程序中的单元测试
mvn site //生成项目相关信息的网站
mvn package //依据项目生成 jar 文件
mvn install //在本地 Repository 中安装 jar
mvn -Dmaven.test.skip=true //忽略测试文档编译
mvn clean //清除目标目录中的生成结果
mvn clean compile //将.java类编译为.class文件
mvn clean package //进行打包
mvn clean test //执行单元测试
mvn clean deploy //部署到版本仓库
mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中
mvn archetype:generate //创建项目架构
mvn dependency:list //查看已解析依赖
mvn dependency:tree com.xx.xxx //看到依赖树
mvn dependency:analyze //查看依赖的工具
mvn help:system //从中央仓库下载文件至本地仓库
mvn help:active-profiles //查看当前激活的profiles
mvn help:all-profiles //查看所有profiles
mvn help:effective -pom //查看完整的pom信息
常用打包命令:
1. mvn clean package -Dmaven.test.skip=true
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段
package命令完成了项目编译、打包功能、跳过了单元测试,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。
2. mvn clean install -Dmaven.test.skip=true
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段
install命令完成了项目编译、打包功能、跳过了单元测试,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库。
3. mvn clean deploy -Dmaven.test.skip=true
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段
deploy命令完成了项目编译、打包功能、跳过了单元测试,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。
(3)提供了一套依赖管理机制
依赖管理其实是管理你项目所依赖的第三方资源,如jar包,插件等。
没有使用maven的场合:
需要下载jar包,复制jar包到项目,将jar包加入到工作环境。
步骤比较繁琐。
使用Maven的场合:
Maven使用标准的坐标配置来管理各种依赖。
只需要简单的配置就可以完成依赖的管理。
3.Maven模型
仓库分为本地仓库,中央仓库和远程仓库。
本地仓库:自己计算机上的一个目录。
中央仓库:由Maven团队维护的全球唯一的仓库。
地址: https://repo1.maven.org/maven2
远程仓库(私服):一般由公司团队搭建的私有仓库。
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
如果有,则在项目直接引用;
如果没有,则去中央仓库中下载对应的jar包到本地仓库。
还可以搭建远程仓库,搭建之后jar包的查找顺序则变为:
本地仓库->远程仓库->中央仓库
4.Maven常用的命令
5.Maven生命周期
(1)Clean生命周期(Clean Lifecycle)
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Clean生命周期一共包含了三个阶段:
pre-clean 执行一些需要在clean之前完成的工作。
clean 移除所有上一次构建生成的文件。
post-clean 执行一些需要在clean之后立刻完成的工作。
(2)Default生命周期(Default Lifecycle)
Default Lifecycle是构建的核心部分,编译,测试,打包,部署等等,Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。
一些比较重要和常用的阶段:
compile 编译项目的源代码。
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
process-test-resources 复制并处理资源文件,至目标测试目录。
process-resources 复制并处理资源文件,至目标目录,准备打包。
test-compile 编译测试源代码。
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
package 接受编译好的代码,打包成可发布的格式,如 JAR。
validate
generate-sources
process-sources
generate-resources
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-classes
prepare-package
pre-integration-test
integration-test
post-integration-test
verify
(3)Site生命周期(Site Lifecycle)
Site Lifecycle 生成项目报告,站点,发布站点,站点的文档(站点信息,依赖..)。Site生命周期,生成站点信息四个阶段:
pre-site 执行一些需要在生成站点文档之前完成的工作。
site 生成项目的站点文档。
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。
site-deploy 将生成的站点文档部署到特定的服务器上。
6.Maven坐标
什么是坐标?
Maven 中的坐标是资源的唯一标识。
使用坐标来定义项目或引入项目中需要的依赖。
Maven 坐标主要组成
groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如: com.itheima)。
artifactld: 定义当前Maven项目名称 (通常是模块名称,例如 order-service、goods-service)。
version:定义当前项目版本号。
7.依赖管理与依赖范围
(1)依赖管理
(2)依赖范围
通过scope可以设置jar包在编译环境,测试环境还是运行环境有效。