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.mzph.cn/news/897251.shtml

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

相关文章

基于 Docker 的跨平台镜像构建与增量更新实战指南

引言&#xff1a;破解容器化两大核心问题 在实际开发中&#xff0c;我们常常面临两个棘手问题&#xff1a; 跨平台兼容性&#xff1a;如何在Windows平台开发的镜像&#xff0c;无缝运行在 ARM64 服务器&#xff1f;更新效率低下&#xff1a;每次代码调整都要重新安装全部依赖…

支付通道开通对接一般需要多少钱

不少老板都想开通AIP线上接口&#xff0c;但是不知道这个成本到底是多少? 其实目前第三方支付公司对外提供了标准的线上接入技术方案&#xff0c;一般以API、SDK等形式。因此&#xff0c;商户在完成签约审核后&#xff0c;可以顺利拿到技术的密钥&#xff0c;正常调用第三方支…

什么是 spring 的循环依赖?

什么是 spring 的循环依赖&#xff1f; 首先&#xff0c;认识一下什么是循环依赖&#xff0c;举个例子&#xff1a;A 对象被 Spring 管理&#xff0c;并且引入的 B 对象&#xff0c;同样的 B 对象也被 Spring 管理&#xff0c;并且也引入的 A 对象。这种相互被引用的情况&#…

thrift软件、.thrif文件和thrift协议是什么关系,有什么用

Thrift软件、.thrift文件和Thrift协议是Apache Thrift框架的三个核心组成部分&#xff0c;它们协同实现跨语言服务的高效开发与通信。以下是三者关系及作用的详细解析&#xff1a; 一、核心组件关系 1. Thrift软件&#xff08;框架&#xff09; • 定位&#xff1a;Apache Th…

STM32旋转编码器驱动详解:方向判断、卡死处理与代码分析 | 零基础入门STM32第四十八步

主题内容教学目的/扩展视频旋转编码器电路原理&#xff0c;跳线设置&#xff0c;结构分析。驱动程序与调用。熟悉电路和驱动程序。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 一、旋转编码器原理与驱动结构1.1 旋转编码器工作原理1.2 驱动程序结构 二、方向判断…

elementplus的cascader级联选择器在懒加载且多选时的一些问题分析

1. 背景 在之前做的一个项目中使用到了element的级联选择器&#xff0c;并且是需要懒加载、多选、父子不关联等等&#xff0c;在选的时候当然没问题&#xff0c;但是回显的时候就会回显不出来&#xff0c;相信大部分伙伴都遇到过这个问题。我在以前出过一篇文章写过关于级联选…

【Python运维】用Python自动化AWS资源管理:利用boto3实现高效管理S3桶和EC2实例

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着云计算的普及,AWS(Amazon Web Services)已经成为许多企业和开发者首选的云平台。为了提高工作效率,自动化管理AWS资源成为了一个热…

淘宝关键字搜索接口爬虫测试实战指南

在电商数据分析和市场研究中&#xff0c;通过关键字搜索获取淘宝商品信息是一项重要任务。淘宝开放平台提供了 item_search 接口&#xff0c;允许开发者通过关键字搜索商品&#xff0c;并获取商品列表及相关信息。本文将详细介绍如何设计并测试一个基于该接口的爬虫程序&#x…

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

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

⭐算法OJ⭐N-皇后问题 II【回溯剪枝】(C++实现)N-Queens II

⭐算法OJ⭐N-皇后问题【回溯剪枝】&#xff08;C实现&#xff09;N-Queens 问题描述 The n-queens puzzle is the problem of placing n n n queens on an n n n \times n nn chessboard such that no two queens attack each other. Given an integer n, return the num…

03.06 QT

一、使用QSlider设计一个进度条&#xff0c;并让其通过线程自己动起来 程序代码&#xff1a; <1> Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QThread> #include "mythread.h"QT_BEGIN_NAMESPACE namespace Ui {…

Spring WebFlux 中 WebSocket 使用 DataBuffer 的注意事项

以下是修改后的完整文档&#xff0c;包含在多个多线程环境中使用 retain() 和 release() 方法的示例&#xff0c;且确保在 finally 块中调用 release()&#xff1a; 在 Spring WebFlux 中&#xff0c;WebSocketMessage 主要用于表示 WebSocket 的消息载体&#xff0c;其中 getP…

【CSS】Tailwind CSS 与传统 CSS:设计理念与使用场景对比

1. 开发方式 1.1 传统 CSS 手写 CSS&#xff1a;你需要手动编写 CSS 规则&#xff0c;定义类名、ID 或元素选择器&#xff0c;并为每个元素编写样式。 分离式开发&#xff1a;HTML 和 CSS 通常是分离的&#xff0c;HTML 中通过类名或 ID 引用 CSS 文件中的样式。 示例&#…

2025华为OD机试真题E卷 - 螺旋数字矩阵【Java】

题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:给出数字个数 n (0 < n ≤ 999)和行数 m(0 < m ≤ 999),从左上角的 1 开始,按照顺时针螺旋向内写方式,依次写出2,3,…,n,最终形成一个 m 行矩阵。小明对这个矩阵有些要求: 1、…

地下井室可燃气体监测装置:守护地下安全,防患于未“燃”!

在城市的地下&#xff0c;隐藏着无数的燃气管道和井室&#xff0c;它们是城市基础设施建设的重要部分&#xff0c;燃气的使用&#xff0c;给大家的生活提供了极大的便利。在便利生活的背后&#xff0c;也存在潜在的城市安全隐患。 近年来&#xff0c;地下井室可燃气体泄漏事故…

【使用hexo模板创建个人博客网站】

使用hexo模板创建个人博客网站 环境准备node安装hexo安装ssh配置 使用hexo命令搭建个人博客网站hexo命令 部署到github创建仓库修改_config.yml文件 编写博客主题扩展 环境准备 node安装 进入node官网安装node.js 使用node -v检查是否安装成功 安装成功后应该出现如上界面 …

C# OPC DA获取DCS数据(提前配置DCOM)

OPC DA配置操作手册 配置完成后&#xff0c;访问远程ip&#xff0c;就能获取到服务 C#使用Interop.OPCAutomation采集OPC DA数据&#xff0c;支持订阅&#xff08;数据变化&#xff09;、单个读取、单个写入、断线重连

发行思考:全球热销榜的频繁变动

几点杂感&#xff1a; 1、单机游戏销量与在线人数的衰退是剧烈的&#xff0c;有明显的周期性&#xff0c;而在线游戏则稳定很多。 如去年的某明星游戏&#xff0c;最高200多万在线&#xff0c;如今在线人数是48名&#xff0c;3万多。 而近期热门的是MH&#xff0c;在线人数8…

Unity自定义区域UI滑动事件

自定义区域UI滑动事件 介绍制作1.创建一个Image2.创建脚本 总结 介绍 一提到滑动事件联想到有太多的插件了比如EastTouchBundle&#xff0c;今天想单纯通过UI去做一个滑动事件而不是基于Box2d或者Box去做滑动事件。 制作 1.创建一个Image 2.创建脚本 using UnityEngine; us…

taosd 写入与查询场景下压缩解压及加密解密的 CPU 占用分析

在当今大数据时代&#xff0c;时序数据库的应用越来越广泛&#xff0c;尤其是在物联网、工业监控、金融分析等领域。TDengine 作为一款高性能的时序数据库&#xff0c;凭借独特的存储架构和高效的压缩算法&#xff0c;在存储和查询效率上表现出色。然而&#xff0c;随着数据规模…