Maven的学习以及安装配置 2024/3/1 idea
1. Maven的安装
1.1 首先查看编程工具合适的Maven版本
我使用的是2024/3/1 版本的idea,接下来我会用这个版本的idea进行演示。idea没有汉化的也可以参考我的步骤。
1、打开idea的设置,搜索Maven,进入Maven设置。
我们可以看到,idea会推荐我们使用的Maven版本:
2. 下载合适的Maven版本
Maven官网下载链接:下载 Apache Maven – Maven
接下来我们要去Maven的官网上下载相对的版本,不要选错链接了!
我下载的链接是:
apache-maven-3.9.9-bin.zip |
3. Maven的解压和配置
解压到没有中文和特殊符文的目录下,然后进入到bin目录的上一级目录,即进入有bin目录的目录中,然后进入conf目录中:
进入setting.xml中:
在<mirrors>中添加国内的Maven镜像:
阿里云Maven镜像:
<!-- 配置阿里云的Maven镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
华为Maven镜像:
<!-- 配置华为的Maven镜像 -->
<mirror>
<id>huaweicloud</id>
<mirrorOf>*</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
创建本地Maven仓库:
4. 在idea中配置Maven
接下来就是要让我们的编写工具认识下载好的Maven:
设置Maven主路径:
用户设置文件:
设置Maven的本地仓库:
5. 创建Maven工程
注意:一定要等第一步结束后才能执行第二步!!!
2. Maven的学习
2.1 Maven的简介
Maven 是一个项目管理工具,主要用于 Java 项目的构建、依赖管理和项目文档生成。它可以自动化构建过程,提高开发效率,确保项目的一致性和可重复性。
2.2 Maven的主要功能
1. 依赖管理
- Maven 可以自动下载项目所需的依赖库,并将其存储在本地仓库中。
- 可以方便地管理项目的依赖关系,避免版本冲突。
2. 项目构建
- 定义了标准的项目构建生命周期,包括编译、测试、打包、部署等阶段。
- 可以通过命令行或集成开发环境(IDE)插件来执行构建过程。
3. 多模块项目管理
- 支持构建多模块项目,方便管理大型项目的结构。
- 可以轻松地在不同模块之间共享代码和资源。
4. 项目文档生成
- 可以生成项目文档,如 Javadoc、项目报告等。
这也是我们为什么要学Maven的原因,不同人之间的写代码的思路、方式都是不一样的,Maven可以更好的方便我们管理项目进度实施,还有不同平台之间也能正常运行。同时简化一些重复的功能
2.3 Maven构建项目的生命周期、常用命令
1、什么是生命周期
在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试,部署等工作,这个过程就是项目构建的生命周期。虽然大家都在不停的做构建工作,但公司与公司之间,项目与项目之间构建项目的方式有所不同。
Maven对所有的构建过程进行了抽象和统一。Maven构建项目的生命周期包含了项目清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。
比如我们项目中最常用的一套流程,如下图所示:
Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如代码编译)都交给插件来完成。
2、 Maven的三套生命周期
1. clean生命周期
主要用于清理项目构建过程中产生的临时文件和输出目录等,有以下三个阶段:
- pre-clean:执行清理前的操作,这个阶段一般很少有具体的任务绑定,但可以用于一些准备工作,比如检查是否有必要进行清理等。
- clean:真正执行清理操作的阶段,默认会删除项目中的 target 目录及其中的所有内容,也就是清理掉上一次构建生成的所有输出文件和目录。
- post-clean:清理操作完成后的阶段,可用于执行一些清理后的后续操作,比如记录清理操作的日志等。
2. default生活周期
这是 Maven 最核心的生命周期,用于项目的编译、测试、打包、安装和部署等主要构建任务,包含以下阶段:
- validate:验证项目是否正确,并且所有必要的信息是否可用。例如检查项目的 POM 文件是否正确解析,必要的依赖是否能找到等。
- initialize:初始化构建,比如设置一些构建属性,创建一些必要的目录等。
- generate-sources:生成项目的源代码,比如通过代码生成工具根据模板生成一些 Java 代码等。
- process-sources:处理项目的源代码,比如过滤一些资源文件中的变量等。
- generate-resources:生成项目需要的资源文件,比如在某些框架中可能会生成配置文件等。
- process-resources:处理资源文件,将资源文件复制到目标目录等,默认会将 src/main/resources 目录下的文件复制到 target/classes 目录。
- compile:编译项目的源代码,例如将 Java 源文件编译成字节码文件,默认会编译 src/main/java 目录下的 Java 文件到 target/classes 目录。
- process-classes:对编译后的类文件进行后处理,比如在 Java 项目中可能会进行字节码增强等操作。
- generate-test-sources:生成测试用的源代码,比如使用一些测试代码生成工具生成测试类等。
- process-test-sources:处理测试源代码,类似于对主源代码的处理,可能会进行过滤等操作。
- generate-test-resources:生成测试需要的资源文件。
- process-test-resources:处理测试资源文件,将测试资源文件复制到测试目标目录,默认是 target/test-classes 目录。
- test-compile:编译测试源代码,将测试源文件编译成字节码文件,默认编译 src/test/java 目录下的文件到 target/test-classes 目录。
- process-test-classes:对编译后的测试类文件进行后处理。
- test:使用合适的单元测试框架运行测试,比如 JUnit、TestNG 等,会在编译后的测试类上执行测试方法。
- prepare-package:在实际打包之前进行一些准备工作,比如对一些文件进行重命名、调整目录结构等。
- package:将项目打包成可发布的格式,如 JAR、WAR、EAR 等。
- pre-integration-test:在集成测试之前执行的操作,比如启动一些服务、准备测试环境等。
- integration-test:执行集成测试,测试项目与其他系统或组件的集成情况。
- post-integration-test:集成测试完成后执行的操作,比如清理测试环境、收集测试报告等。
- verify:验证项目是否满足质量标准等,比如检查测试结果是否符合要求、代码是否满足代码规范等。
- install:将项目的包安装到本地仓库,以便其他项目可以依赖它。
- deploy:将项目的包部署到远程仓库,供其他团队或项目使用。
其中最重要的过程有:initialize(初始化),compile(编译源代码),test(运行测试),package(打包项目),install(安装项目到本地仓库)
3. site生命周期
主要用于生成项目的站点文档,为项目提供文档支持和展示,有以下阶段:
- pre-site:在生成站点前执行一些准备工作,比如检查站点生成的配置是否正确等。
- site:生成项目的站点文档,会根据项目中的文档资源和配置生成 HTML 等格式的文档页面,包括项目的介绍、API 文档、测试报告等内容。
- post-site:在站点生成后执行一些后续工作,比如对生成的站点文件进行优化、压缩等操作。
- site-deploy:将生成的站点部署到服务器上,以便团队成员和其他用户可以通过网络访问项目的文档站点。