当前位置: 首页 > article >正文

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 最核心的生命周期,用于项目的编译、测试、打包、安装和部署等主要构建任务,包含以下阶段:

  1. validate:验证项目是否正确,并且所有必要的信息是否可用。例如检查项目的 POM 文件是否正确解析,必要的依赖是否能找到等。
  2. initialize:初始化构建,比如设置一些构建属性,创建一些必要的目录等。
  3. generate-sources:生成项目的源代码,比如通过代码生成工具根据模板生成一些 Java 代码等。
  4. process-sources:处理项目的源代码,比如过滤一些资源文件中的变量等。
  5. generate-resources:生成项目需要的资源文件,比如在某些框架中可能会生成配置文件等。
  6. process-resources:处理资源文件,将资源文件复制到目标目录等,默认会将 src/main/resources 目录下的文件复制到 target/classes 目录。
  7. compile:编译项目的源代码,例如将 Java 源文件编译成字节码文件,默认会编译 src/main/java 目录下的 Java 文件到 target/classes 目录。
  8. process-classes:对编译后的类文件进行后处理,比如在 Java 项目中可能会进行字节码增强等操作。
  9. generate-test-sources:生成测试用的源代码,比如使用一些测试代码生成工具生成测试类等。
  10. process-test-sources:处理测试源代码,类似于对主源代码的处理,可能会进行过滤等操作。
  11. generate-test-resources:生成测试需要的资源文件。
  12. process-test-resources:处理测试资源文件,将测试资源文件复制到测试目标目录,默认是 target/test-classes 目录。
  13. test-compile:编译测试源代码,将测试源文件编译成字节码文件,默认编译 src/test/java 目录下的文件到 target/test-classes 目录。
  14. process-test-classes:对编译后的测试类文件进行后处理。
  15. test:使用合适的单元测试框架运行测试,比如 JUnit、TestNG 等,会在编译后的测试类上执行测试方法。
  16. prepare-package:在实际打包之前进行一些准备工作,比如对一些文件进行重命名、调整目录结构等。
  17. package:将项目打包成可发布的格式,如 JAR、WAR、EAR 等。
  18. pre-integration-test:在集成测试之前执行的操作,比如启动一些服务、准备测试环境等。
  19. integration-test:执行集成测试,测试项目与其他系统或组件的集成情况。
  20. post-integration-test:集成测试完成后执行的操作,比如清理测试环境、收集测试报告等。
  21. verify:验证项目是否满足质量标准等,比如检查测试结果是否符合要求、代码是否满足代码规范等。
  22. install:将项目的包安装到本地仓库,以便其他项目可以依赖它。
  23. deploy:将项目的包部署到远程仓库,供其他团队或项目使用。

其中最重要的过程有:initialize(初始化),compile(编译源代码),test(运行测试),package(打包项目),install(安装项目到本地仓库)

3. site生命周期

主要用于生成项目的站点文档,为项目提供文档支持和展示,有以下阶段:

  • pre-site:在生成站点前执行一些准备工作,比如检查站点生成的配置是否正确等。
  • site:生成项目的站点文档,会根据项目中的文档资源和配置生成 HTML 等格式的文档页面,包括项目的介绍、API 文档、测试报告等内容。
  • post-site:在站点生成后执行一些后续工作,比如对生成的站点文件进行优化、压缩等操作。
  • site-deploy:将生成的站点部署到服务器上,以便团队成员和其他用户可以通过网络访问项目的文档站点。

http://www.kler.cn/a/577251.html

相关文章:

  • css动画实现铃铛效果
  • 又一次流量分析
  • 神经紊乱怎么治才能彻底除根
  • 哈夫曼树的讲解
  • 【CSS3】练气篇
  • 【UI自动化框架第五张】AndroidUiAutomation 类功能简介
  • react中如何使用使用react-redux进行数据管理
  • 逐梦DBA:MySQL目录结构与源码
  • C/C++蓝桥杯算法真题打卡(Day4)
  • 完美解决uni-app打开页面无法自动播放视频的问题
  • 关于Buildroot和menuconfig
  • `README`、`LICENSE` 和 `.gitignore` 是非常常见的文件
  • 虚拟机vmware中ubuntu 磁盘扩容步骤
  • spring如何解决循环依赖的 ?
  • 基于Asp.net的教学管理系统
  • 互动游戏开发新趋势:弹幕游戏源码与H5游戏源码开发的融合与创新
  • 【redis】全局命令exists、del、expire、ttl(惰性删除和定期删除)
  • Mysql的行级锁到底锁住了哪些行
  • 安装微软最新原版系统,配置好系统驱动并保留OOBE全新体验
  • 文件与目录权限