maven框架
Maven 是一个项目管理和构建自动化工具,由 Apache 软件基金会维护,广泛应用于 Java 项目开发中。它通过约定优于配置的原则和依赖管理机制,简化了项目的构建、测试、打包和部署流程。以下是 Maven 的核心要点:
1. 核心定位
- 项目构建工具:自动化处理编译、测试、打包(如 JAR/WAR)、部署等流程。
- 依赖管理:统一管理项目所需的第三方库(如 Spring、MyBatis)及其版本,避免冲突。
- 标准化开发流程:通过生命周期(Lifecycle)和插件(Plugin)定义标准化的构建步骤。
2. 核心概念
(1) POM(Project Object Model)
- 项目配置文件:
pom.xml
是 Maven 的核心文件,定义项目信息、依赖、插件等。 - 示例:
xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId> <!-- 项目组织ID(通常为域名反写) -->
<artifactId>my-app</artifactId> <!-- 项目模块名 -->
<version>1.0.0</version> <!-- 版本号 -->
<dependencies>
<!-- 依赖配置 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.10</version>
</dependency>
</dependencies>
</project>
(2) 生命周期(Lifecycle)
Maven 定义了三个标准生命周期:
- Clean:清理项目(
mvn clean
)。 - Default:核心构建流程(编译、测试、打包、安装等)。
compile
→test
→package
→install
→deploy
- Site:生成项目文档(
mvn site
)。
(3) 插件(Plugin)
- 插件是生命周期中具体任务的执行者,例如:
maven-compiler-plugin
:编译 Java 代码。maven-surefire-plugin
:运行单元测试。maven-jar-plugin
:打包为 JAR 文件。
(4) 仓库(Repository)
- 本地仓库:存储在用户目录下的
.m2/repository
,缓存下载的依赖。 - 远程仓库:
- 中央仓库(Maven Central):默认的公共仓库(https://repo.maven.apache.org)。
- 私有仓库:如 Nexus 或 Artifactory,用于内部共享依赖。
3. 常用命令
命令 | 作用 |
---|---|
mvn clean | 删除 target 目录(清理编译结果)。 |
mvn compile | 编译源代码到 target/classes 。 |
mvn test | 运行单元测试。 |
mvn package | 打包为 JAR/WAR 文件(到 target/ )。 |
mvn install | 将包安装到本地仓库,供其他项目依赖。 |
mvn deploy | 将包发布到远程仓库(如 Nexus)。 |
mvn dependency:tree | 查看依赖树,分析冲突。 |
4. 优势
- 依赖管理:自动下载和更新依赖,避免手动管理 JAR 包。
- 标准化流程:统一构建步骤,减少“在我机器上能运行”的问题。
- 插件扩展:通过插件支持代码生成、静态分析、部署等任务。
- 多模块支持:适合大型项目分模块开发(如
parent-pom
管理子模块)。
5. 与 Gradle 的对比
特性 | Maven | Gradle |
---|---|---|
配置方式 | XML(pom.xml ) | Groovy/Kotlin DSL(更灵活) |
性能 | 较慢(基于 XML 解析) | 更快(增量构建、缓存优化) |
学习曲线 | 较低(约定优于配置) | 较高(需学习 DSL 语法) |
适用场景 | 传统 Java 项目、企业级应用 | Android 开发、复杂构建脚本 |
6. 典型项目结构
Maven 项目遵循标准目录布局:
my-app/ |
├── src/ |
│ ├── main/ |
│ │ ├── java/ # Java 源代码 |
│ │ └── resources/ # 配置文件(如 `application.properties`) |
│ └── test/ |
│ ├── java/ # 测试代码 |
│ └── resources/ # 测试配置 |
├── target/ # 构建输出目录(自动生成) |
└── pom.xml # 项目配置文件 |
7. 生态扩展
- Spring Boot Maven 插件:支持打包可执行 JAR/WAR。
- Maven Wrapper:确保团队使用统一版本的 Maven(无需全局安装)。
- Nexus/Artifactory:搭建私有仓库,管理内部依赖。
总结
Maven 通过 pom.xml
和 生命周期 机制,为 Java 项目提供了高效的依赖管理和构建自动化能力。尽管 Gradle 在性能上更优,但 Maven 仍是企业级 Java 项目的首选工具之一,尤其适合需要标准化和稳定性的场景。
生产实习示例
Svn eclipse maven量级
- Maven的简介
- 什么是maven
是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的
-
- Maven好处
普通的传统项目
Maven项目
分析:maven项目为什么这么小?没有jar。需要jar吗?肯定需要。没有存在于maven项目里面,jar存在于哪?
-
- 依赖管理
-
- 项目一键构建
编码编译测试(junit) 运行打包部署
一个 tomcat:run就能把项目运行起来
Maven能干的事:
编译测试(junit) 运行打包部署
小结:
Maven的好处:
依赖管理
就是对jar包的统一管理可以节省空间
- 一键构建
- 应用于大型项目可以提高开发效率
- 可以跨平台
分析:
用户管理订单管理支付管理。。。。。
Maven的分模块开发
互联网项目按业务分
传统项目按层分 entity dao service web
Maven的安装配置
下载安装
1.官网下载https://maven.apache.org/download.cgi
2.下载完成后,解压到某一路径下。本文以F:\class32\apache-maven-3.3.9为例,实际配置环境变量时以自己安装的路径为准。
Source是源代码版本,需要自己编译成可执行软件才可使用。
tar.gz和zip两种压缩格式,其实这两个压缩文件里面包含的内容是同样的,只是压缩格式不同
tar.gz格式的文件比zip文件小很多,用于unix操作系统。
zip格式用于Windows操作系统,但在Windows系统使用WinRar工具一样能够解压缩tar.gz格式
直接解压到一个没有中文没有空格的文件夹里解压后的目录如下:
Maven软件的核心文件:
- Maven环境变量配置
- 要配置jdk, maven3.3.9这个版本所需的jdk版本必须要1.7以上
- 最终要运行的是maven软件中bin目录的mvn命令
所以要配置maven的环境变量
在系统变量添加
环境变量的名称:MAVEN_HOME
变量值:就是maven软甲解压的目录F:\class32\apache-maven-3.3.9
- 把MAVEN_HOME添加到path里
F:\mav\apache-maven-3.3.9\bin
4、验证maven是否配置成功:
打开dos窗口输入: mvn –v
-
- Maven仓库
三种仓库
1、本地仓库自己维护
本地仓库的配置只需要修改settings.xml文件就可以
配置idea
创建Maven项目
<!-- https://mvnrepository.com/-->
阿里云加速器
加入日志包