Maven是一个强大的项目管理和构建工具,它能够简化Java项目的构建、依赖管理和发布过程。以下是Maven的一些主要特点和功能:
标准化项目结构:
标准化构建流程:
依赖管理:
使用maven前:
使用maven后:
Apache Maven是一个开源的项目管理和构建工具,它是由Apache软件基金会开发和维护的。Maven使用基于项目对象模型(Project Object Model,简称POM)的概念来管理项目,并提供了一套规范和工具来支持项目的构建、依赖管理和发布.
Maven的项目对象模型(Project Object Model,简称POM)是一种XML文件,用于描述和定义Maven项目的结构、依赖关系、构建配置等信息。每个Maven项目都有一个对应的POM文件,位于项目根目录下,文件名为pom.xml
POM文件包含了以下主要元素:
通过POM文件,Maven可以理解项目的结构和依赖关系,以及如何进行构建和发布。开发人员可以在POM文件中声明和管理项目的各种属性和配置,使得项目的构建和管理更加简单和可控。
POM文件还支持继承机制,可以通过父子模块关系实现项目间的代码复用和依赖管理。子模块的POM文件可以继承父模块的配置,同时可以覆盖或添加自己特定的配置。
•仓库分类:
本地仓库:自己计算机上的一个目录
中央仓库:由Maven团队维护的全球唯一的仓库
•地址:https://repo1.maven.org/maven2/
远程仓库(私服):一般由公司团队搭建的私有仓库
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:如果有,则在项目直接引用; 如果没有,则去中央仓库中下载对应的jar包到本地仓库。还可以搭建远程仓库,将来jar包的查找顺序则变为:本地仓库 -> 远程仓库 ->中央仓库
maven的配置文件: conf/setting.xml
<localRepository>D:\repositorylocalRepository>
<mirrors>
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
mirrors>
<profiles>
<profile>
<id>JDK-1.8id>
<activation>
<activeByDefault>trueactiveByDefault>
<jdk>1.8jdk>
activation>
<properties>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
<maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
properties>
profile>
profiles>
在idea的setting选项中:
使用本地上安装并且配置好的maven;
使用本地配置好的maven配置文件;
使用本地仓库;
在setting中配置完maven后, 需要在New Projects Setup中也配置一下, 否则每次新建项目都需要重新配置maven
compile :编译 clean:清理 test:测试 package:打包 install:安装
Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件;
Maven 对项目构建的生命周期划分为3套
clean:清理工作:
default:核心工作,例如编译,测试,打包,安装等
site:产生报告,发布站点等
validate(校验) 校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
initialize(初始化) 初始化构建状态,比如设置属性值。
generate-sources(生成源代码) 生成包含在编译阶段中的任何源代码。
process-sources(处理源代码) 处理源代码,比如说,过滤任意值。
generate-resources(生成资源文件) 生成将会包含在项目包中的资源文件。
process-resources (处理资源文件) 复制和处理资源到目标目录,为打包阶段最好准备。
compile(编译) 编译项目的源代码。
process-classes(处理类文件) 处理编译生成的文件,比如说对Java class文件做字节码改善优化。
generate-test-sources(生成测试源代码) 生成包含在编译阶段中的任何测试源代码。
process-test-sources(处理测试源代码) 处理测试源代码,比如说,过滤任意值。
generate-test-resources(生成测试资源文件) 为测试创建资源文件。
process-test-resources(处理测试资源文件) 复制和处理测试资源到目标目录。
test-compile(编译测试源码) 编译测试源代码到测试目标目录.
process-test-classes(处理测试类文件) 处理测试源码编译生成的文件。
test(测试) 使用合适的单元测试框架运行测试(Juint是其中之一)。
prepare-package(准备打包) 在实际打包之前,执行任何的必要的操作为打包做准备。
package(打包) 将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
pre-integration-test(集成测试前) 在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
integration-test(集成测试) 处理和部署项目到可以运行集成测试环境中。
post-integration-test(集成测试后) 在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
verify (验证) 运行任意的检查来验证项目包有效且达到质量标准。
install(安装) 安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
deploy(部署) 将最终的项目包复制到远程仓库中与其他开发者和项目共享。
Maven中每个项目都有一个坐标, 只有
什么是坐标?
Maven 中的坐标是资源的唯一标识
使用坐标来定义项目或引入项目中需要的依赖
Maven 坐标主要组成
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
version:定义当前项目版本号
pom.xml文件中里面是设置的所有依赖信息;
单个的依赖信息是标签中来设置, 是通过,以及的坐标来确定依赖的位置;
<dependencies>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>5.3.3version>
dependency>
<dependency>