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.rhkb.cn/news/31904.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes——part3-5 核心概念 Service

一、 service作用 使用kubernetes集群运行工作负载时&#xff0c;由于Pod经常处于用后即焚状态&#xff0c;Pod经常被重新生成&#xff0c;因此Pod对应的IP地址也会经常变化&#xff0c;导致无法直接访问Pod提供的服务&#xff0c;Kubernetes中使用了Service来解决这一问题&am…

【脚本】Linux一键扩大虚拟内存的大小

Linux增加虚拟内存其实很简单 就那几个命令&#xff0c;free、mkswap、swapon 但是方便起见我写成了脚本 使用方法 进入你的目录&#xff0c; nano ./install_swap.sh 下面的脚本全文复制&#xff0c;粘贴进去之后&#xff0c;按ctrlx后按y保存 然后运行以下命令 sudo bash …

学习 MySQL 需要知道的 28 个小技巧

前言 随着信息技术的不断发展以及互联网行业的高速增长&#xff0c;作为开源数据库的MySQL得到了广泛的应用和发展。目前MySQL已成为关系型数据库领域中非常重要的一员。 无论是运维、开发、测试&#xff0c;还是架构师&#xff0c;数据库技术都是一个 必备加薪神器&#xff…

【Hive】Hive安装

Hive 第一章 Hive的基础知识 第二章 Hive安装 第三章 DDL&#xff08;Data Definition Language&#xff09;数据定义 第四章 DML&#xff08;Data Manipulation Language&#xff09;数据操作 第五章 Hive查询 第六章 Hive的基础知识 第七章 Hive函数 第八章 分区表和分桶表 …

6.聊天室环境安装 - Ubuntu22.04 - elasticsearch(es)的安装和使用

目录 介绍安装安装kibana安装ES客户端使用 介绍 Elasticsearch&#xff0c; 简称 ES&#xff0c;它是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff0c;零配置&#xff0c;自动发现&#xff0c;索引自动分片&#xff0c;索引副本机制&#xff0c;res…

蓝桥每日打卡--合根植物

#蓝桥#JAVA#合根植物 题目描述 w星球的一个种植园&#xff0c;被分成mn个小格子&#xff08;东西方向m行&#xff0c;南北方向n列&#xff09;。每个格子里种了一株合根植物。 这种植物有个特点&#xff0c;它的根可能会沿着南北或东西方向伸展&#xff0c;从而与另一个格子…

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录 前言1. 幂迭代法&#xff08;Power Iteration&#xff09;幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法&#xff08;Inverse Iteration&#xff09;移位反幂法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩阵理论推导编程…

【Linux实践系列】:用c语言实现一个shell外壳程序

&#x1f525;本文专栏&#xff1a;Linux Linux实践项目 &#x1f338;博主主页&#xff1a;努力努力再努力wz 那么今天我们就要进入Linux的实践环节&#xff0c;那么我们之前学习了进程控制相关的几个知识点&#xff0c;比如进程的终止以及进程的等待和进程的替换&#xff0c;…

使用STM32CubeMX配置定时器中断实现LED每秒闪烁一次(STM32G070CBT6)

说明&#xff1a; 本案例采用的定时器3&#xff08;TIM3&#xff09;实现&#xff0c;使用其他定时器是一样配置。 如何新建一个工程以及如何配置LED的端口&#xff0c;请查看前面文章&#xff1a;使用STM32CubeMX实现LED灯每秒闪烁一次&#xff08;STM32G070CBT6单片机&…

2025年Draw.io最新版本下载安装教程,附详细图文

2025年Draw.io最新版本下载安装教程&#xff0c;附详细图文 大家好&#xff0c;今天给大家介绍一款非常实用的流程图绘制软件——Draw.io。不管你是平时需要设计流程图、绘制思维导图&#xff0c;还是制作架构图&#xff0c;甚至是简单的草图&#xff0c;它都能帮你轻松搞定。…

GStreamer —— 2.15、Windows下Qt加载GStreamer库后运行 - “播放教程 1:Playbin 使用“(附:完整源码)

运行效果 介绍 我们已经使用了这个元素&#xff0c;它能够构建一个完整的播放管道&#xff0c;而无需做太多工作。 本教程介绍如何进一步自定义&#xff0c;以防其默认值不适合我们的特定需求。将学习&#xff1a; • 如何确定文件包含多少个流&#xff0c;以及如何切换 其中。…

Python----数据可视化(Seaborn一:介绍,应用)

一、Seaborn的介绍 Seaborn 是一个基于 matplotlib 的 Python 库&#xff0c;对其进行了高级 API 的封装&#xff0c;使得作图更为方便和吸引人。尽管在大多数情况下&#xff0c;使用 Seaborn 就能够创建出美观的图表&#xff0c;但 matplotlib 提供了更高的灵活性和定制化的能…

小程序SSL证书过期怎么办?

SSL证书就像小程序的“安全锁”&#xff0c;一旦过期&#xff0c;用户访问时会被提示“不安全”&#xff0c;轻则流失客户&#xff0c;重则数据泄露&#xff01;作为企业负责人&#xff0c;如何快速解决证书过期问题&#xff1f;又该如何避免再次踩坑&#xff1f;这篇指南给你答…

Linux上位机开发实战(x86和arm自由切换)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过&#xff0c;qt本身支持windows系统&#xff0c;也支持linux系统。不仅如此&#xff0c;qt除了支持传统的x86 cpu之外&#xff0c;还支…

Mysql的卸载安装配置以及简单使用

MySQL其它问题已经更新在&#xff1a;MySQL完善配置---可视化-CSDN博客 一、卸载 ①控制面板卸载 ②C盘隐藏项目>ProgramData>mysql相关文件夹&#xff0c;还有Program file下的MySQL文件夹 ③开始菜单栏搜索>服务&#xff0c;找到MySQL相关服务删除&#xff0c;如果再…

RabbitMQ之旅(1)

相信自己,终会成功 目录 主流MQ产品 1.kafaka 2.RocketMQ 3.RabbitMQ 在xshell上安装RabbitMQ RabbitMQ七种工作模式 1.简单模式 ​编辑 2.工作队列模式 3.发布/订阅模式 4.路由模式 5.通配符模式 6.RPC模式 AMQP.BasicProperties 设置消息属性的类 7.发布确认模…

基于Matlab的人脸识别的二维PCA

一、基本原理 传统 PCA 在处理图像数据时&#xff0c;需将二维图像矩阵拉伸为一维向量&#xff0c;这使得数据维度剧增&#xff0c;引发高计算成本与存储压力。与之不同&#xff0c;2DPCA 直接基于二维图像矩阵展开运算。 它着眼于图像矩阵的列向量&#xff0c;构建协方差矩阵…

el-pagination的使用说明

<el-paginationv-model:current-page"pageNo" //当前第几页v-model:page-size"pageSize" //每页显示多少条数据:page-sizes"[10, 20, 30]" //控制每页显示的条数:small"true" //控制分页器大小:disabled&quo…

Redis Redis介绍、安装 - Redis客户端

目录 redis是什么&#xff0c;他的应用场景是什么&#xff1f; Redis的一些主要特点和应用场景&#xff1a; redis的官方网站&#xff1a;Redis redis是键值型数据库&#xff1a;&#xff08;也就是key-value模式&#xff09;&#xff08;跟python的字典很像&#xff09; …

LWIP网络模型及接口简介(DAY 01)

目录 1.网络协议分层模型 2. LWIP三种编程接口 1.网络协议分层模型 其中各层级的封装与拆封过程 2. LWIP三种编程接口 LwIP 提供了三种编程接口&#xff0c;分别为 RAW/Callback API、NETCONN API、SOCKET API。它们的易用性从左到右依次提高&#xff0c;而执行效率从左到右依…