Java开发的构建神器:Maven以及如何安装部署Maven

目录

  • 一、Maven
    • 引言
    • 1.1 Maven的核心概念
      • ✍. POM (Project Object Model)
      • ✌. 依赖管理
      • ✍. 生命周期与构建阶段
      • ✌. 插件系统
    • 1.2 Maven的工作流程
      • ✍. 读取POM文件:
      • ✌. 依赖解析:
      • ✍. 构建生命周期:
      • ✌. 插件执行:
      • ✍. 构建输出:
  • 二、 下载安装、部署配置
      • 2.1 解压
      • 2.3 配置环境变量
      • 2.4 测试
    • 2.5 仓库[了解]
    • Maven配置
      • 修改仓库位置
      • 设置镜像
  • 三、IDEA - MAVEN
    • 3.1 idea关联maven
    • 3.2 为新项目设置
    • 3.3 创建java项目[重点]
    • 3.4 java项目结构
    • 3.5 pom
    • 3.6 导入依赖
      • 查找依赖
      • 使用依赖
    • 3.7 测试
    • 3.8 BUG处理
    • 3.9 经验总结

一、Maven

引言

Apache Maven已经成为了不可或缺的构建管理和项目管理工具。自2004年诞生以来,Maven以其标准化的构建过程、依赖管理机制以及强大的插件生态系统,极大地简化了项目的构建和维护工作。

本文将深入探讨Maven的核心概念、工作原理及其在实际开发中的应用,帮助开发者更好地理解和利用这一强大的工具。

1.1 Maven的核心概念

✍. POM (Project Object Model)

Maven的核心是项目对象模型(Project Object Model, POM),定义在pom.xml文件中。POM是一个XML文件,包含了项目的基本信息、配置细节以及项目依赖。它不仅是构建过程的配置中心,也是Maven理解项目结构和管理依赖的关键。

✌. 依赖管理

Maven通过坐标系统(groupId, artifactId, version)唯一标识每一个依赖库,并自动从远程仓库下载所需的JAR包及依赖,解决了“依赖地狱”问题。开发者无需手动管理类路径和版本冲突。

✍. 生命周期与构建阶段

Maven定义了一套标准的生命周期,包括清理(clean)、编译(compile)、测试(test)、打包(package)、验证(verify)和安装(install)等阶段。开发者可以通过执行不同的生命周期阶段来完成特定任务,而不需要了解底层命令的具体实现。

✌. 插件系统

Maven的强大之处还在于其丰富的插件系统。几乎每一个构建任务都有对应的插件来完成,如编译源代码的maven-compiler-plugin、运行测试的maven-surefire-plugin等。用户可以根据需要选择或自定义插件,扩展Maven的功能。

1.2 Maven的工作流程

✍. 读取POM文件:

Maven首先解析项目根目录下的pom.xml文件,获取项目配置信息。

✌. 依赖解析:

根据POM中声明的依赖,Maven查找并下载所有直接和传递依赖到本地仓库。

✍. 构建生命周期:

根据用户指定的命令(如mvn install),Maven依次执行相应的生命周期阶段。

✌. 插件执行:

在每个构建阶段,Maven调用相应的插件来完成具体任务,如编译源代码、运行测试等。

✍. 构建输出:

最终,Maven根据配置生成可部署的工件(如JAR、WAR)并根据指令可能安装到本地仓库或部署到远程仓库。

二、 下载安装、部署配置

网址 Maven – Download Apache Maven

下载地址 Index of /dist/maven/maven-3 (apache.org)

image-20230322172016815

2.1 解压

特别注意: 路径不要有中文路径

解压后有几个文件夹
- bin  运行maven命令的脚本
- boot 运行是需要类库
- conf 配置,有关于maven的配置文件
- lib  运行是需要的jar包

2.3 配置环境变量

系统变量-创建: MAVEN_HOME 值是maven安装路径

系统变量path添加 %MAVEN_HOME%\bin

1.打开设置,找到系统----->系统信息
在这里插入图片描述

2.找到高级系统设置 ,打开(系统版本不同,位置可能不太一样)
在这里插入图片描述
3.点击环境变量
在这里插入图片描述
3.点击新建

系统变量-创建: MAVEN_HOME 值是maven安装路径

系统变量path添加 %MAVEN_HOME%\bin

在这里插入图片描述
在这里插入图片描述

然后就完成了

2.4 测试

打开cmd,输入mvn -v

image-20230323095449682

2.5 仓库[了解]

maven项目管理工具,管理依赖(jar包),实现依赖的复用.


maven有仓库,将依赖(jar包)放入仓库,每个项目都去复用

  • 本地仓库
    • 自己电脑上
    • 需要依赖的时候,会先从本地仓库中找,如果找不到就会去中央仓库找,下载到本地仓库,下次再用就可以从本地仓库找到使用
  • 中央仓库
    • 位于国外服务器,包含绝大部分依赖
    • 可能有时候访问比较慢
  • 公共仓库
    • 私服(个人)
    • 阿里云,网易,等等

image-20230322172407495

Maven配置

修改仓库位置

maven安装好后,默认本地仓库在c盘,要修改为其他地方


修改maven的配置文件(conf\settings.xml)

<!-- 将53行注释内代码,复制出来,粘贴到55行,修改路径为自己本地仓库位置 --><localRepository>D:\repository</localRepository>

ps: 记得保存,ctrl+s

设置镜像

依赖会先从本地仓库找,本地没有会从中央仓库下载到本地仓库,中央仓库访问很慢,所以需要设置国内镜像,访问就很快!

<!--setting.xml中添加如下配置 146行附近一定是在开闭标签 <mirrors> </mirrors>中间设置
--><mirror><id>aliyun</id>  <!-- 中心仓库的 mirror(镜像) --><mirrorOf>central</mirrorOf>    <name>Nexus aliyun</name><!-- aliyun仓库地址 以后所有要指向中心仓库的请求,都会指向aliyun仓库-->   <url>http://maven.aliyun.com/nexus/content/groups/public</url>  </mirror>

三、IDEA - MAVEN

3.1 idea关联maven

  • 打开任何一个idea项目

  • file - setting for new project

    image-20240618100851274

找到build

image-20221124110058057

image-20221124110417317

3.2 为新项目设置

因为上面的设置只是对当前项目生效,需要对后续每个项目都生效!!需要再设置

image-20240314100717601

image-20240314100736744

3.3 创建java项目[重点]

  1. 找到maven选项

image-20221124110734298

  1. 设置信息

image-20230322172605656

image-20240314100303836

3.4 java项目结构

image-20230322172622607

|-项目名
|---src
|------main
|---------java
|---------resources
|------test
|---------java
|---------resources
|---pom.xml

3.5 pom

pom 项目对象模型(project object model),这是一个xml文件(ps: xml文件一种文件格式,类似HTML是标签形式的)

pom文件内定义

  • 项目信息
    • 项目名
    • 组织名
    • 版本
    • 打包方式
      • 默认是jar , 普通java项目
      • 可以指定为war, 即web项目
  • 项目依赖
    • 依赖就是jar包
    • 是以坐标的形式展现
  • 构建工具
    <!--  项目信息--> <groupId>com.qf</groupId><artifactId>day18_java</artifactId><version>1.0-SNAPSHOT</version><!-- 打包方式 ,默认是jar,如果是javaweb项目,打包方式是war--><packaging>jar</packaging>
<!-- 定义依赖(jar包) --><dependencies><!-- 具体的jar包依赖坐标 -->
<!--        <dependency>-->
<!--            <groupId></groupId>-->
<!--            <artifactId></artifactId>-->
<!--            <version></version>-->
<!--        </dependency>--></dependencies>

3.6 导入依赖

查找依赖

官方提供一中央仓库网站,网站中有所有jar包的依赖信息,就可以搜索依赖

Maven Repository: Search/Browse/Explore (mvnrepository.com)

image-20230802113117921

image-20230802113044343

image-20230802113020309

使用依赖

将复制的依赖坐标,粘贴到pom文件

    <!-- 依赖,就是jar包 --><dependencies> <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency></dependencies>

image-20230802113144238

还可以进入仓库中去查看,是否下载成功

3.7 测试

public class Test {public static void main(String[] args) {FileUtil.del("E:\\IDEA-WorkSpace\\test_maven\\a.txt");System.out.println("over" );// 能执行就说明maven导入hutool成功}
}

3.8 BUG处理

如果依赖赋值粘贴后有红色报错,刷新maven

image-20230802113309608

jar包的话就在子模块导入依赖即可

3.9 经验总结

  • 当你发现下方进度条一直在走,感觉走不完, 一般情况镜像出问题
    • 此时需要打开idea的settings确定一下maven安装路径和settings配置文件是否是自己的
    • 改成自己的路径后,刷新maven
  • 使用maven,一般就是注意
    • 会创建maven项目(注意gav坐标)
    • 注意代码位置(src/main/java)
    • 注意pom.xml,会引入依赖(会查依赖)
      • 导入依赖后记得刷新maven让其下载依赖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/353177.html

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

相关文章

C#——结构体详情

结构体 结构体也被称为结构类型&#xff08;“structure type”或“struct type”&#xff09;&#xff0c;它是一种可封装数据和相关功能的值类型&#xff0c;在语法上结构体与类&#xff08;class&#xff09;非常相似&#xff0c;它们都可以用来封装数据&#xff0c;并且都…

PHP简约轻型聊天室留言源码

无名轻聊是一款phptxt的轻型聊天室。 无名轻聊特点&#xff1a; 自适应电脑/手机 数据使用txt存放&#xff0c;默认显示近50条聊天记录 采用jqueryajax轮询方式&#xff0c;适合小型聊天环境。 访问地址加?zhi进入管理模式&#xff0c;发送 clear 清空聊天记录。 修改在…

示例:WPF中使用DecodePixelHeight和DecodePixelWidth优化Image性能

一、目的&#xff1a;在使用Image控件时&#xff0c;如果图片太大或者图片数量过多时加载出来的程序内存会非常的大&#xff0c;但一般图片多时我们只要预览缩略图就可以&#xff0c;查看时再显示原图&#xff0c;这个时候需要通过通过设置BitmapImage的DecodePixelHeight和Dec…

若依Ruoyi-vue和element admin的区别,该如何选择。

提到中后台的前端框架&#xff0c;每个人都能列举出很多&#xff0c;这其中提及率比较高的就是Ruoyi和element admin两款&#xff0c;很多小伙伴分不清二者&#xff0c;本文为大家详细讲解一下。 一、若依Ruoyi-vue是什么&#xff1f; 若依Ruoyi-Vue是一款基于 Vue.js 开发的…

随想录Day63 | 单调栈 42. 接雨水 84.柱状图中最大的矩形

随想录Day63 | 单调栈 42. 接雨水 84.柱状图中最大的矩形 42. 接雨水 题目链接 42 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 第一次提交 class Solution { public:int trap(vector<int>…

c++中string用法详解

目录 二、案例需求 三、案例实现 1.首先获取strData中的角色数量 2.创造结构体数组&#xff0c;定义两个索引值 3.循环遍历对结构体User中的Id和Exp进行赋值 4.对结构体数组userArr进行排序 5.展示结果以及最终代码 ​四、最后 一、前言 在C中&#xff0c;std::string …

UITableView之显示单组数据Demo

需求 UITableView实现显示单组数据。尝试设置不同行高度不同。 效果&#xff1a; 数据展示 实现 与之前分组显示数据的区别在于懒加载的数据模型不同。 &#xff08;1&#xff09;声明数据模型类 类的属性一定要和plist中数据的字段保持一致 interface CZhero : NSObject /…

【Android】使用SeekBar控制数据的滚动

项目需求 有一个文本数据比较长&#xff0c;需要在文本右侧加一个SeekBar&#xff0c;然后根据SeekBar的上下滚动来控制文本的滚动。 项目实现 我们使用TextView来显示文本&#xff0c;但是文本比较长的话&#xff0c;需要在TextView外面套一个ScrollView&#xff0c;但是我…

远程连接路由器:方法大全与优缺点解析

远程连接路由器的方式主要有以下几种&#xff0c;以下是每种方式的详细说明及其优缺点&#xff1a; 使用Web浏览器登录 方法&#xff1a;通过配置路由器的远程管理功能&#xff0c;允许用户通过互联网浏览器访问路由器的管理界面。用户只需输入路由器的公网IP地址或域名&#…

vue中通过自定义指令实现一个可拖拽,缩放的弹窗

效果 功能描述 按住头部可拖拽鼠标放到边框&#xff0c;可缩放多层重叠丰富的插槽&#xff0c;易于扩展 示例 指令代码 export const dragDialog {inserted: function (el, { value, minWidth 400, minHeight 200 }) {// 让弹窗居中let dialogHeight el.clientHeight ?…

Vue.js结合ASP.NET Core构建用户登录与权限验证系统

1. 环境准备2. 创建项目3. Vue配置步骤一: 安装包步骤二: 配置文件步骤三: 页面文件 4. 后台配置 在本教程中&#xff0c;我将利用Visual Studio 2022的强大集成开发环境&#xff0c;结合Vue.js前端框架和ASP.NET Core后端框架&#xff0c;从头开始创建一个具备用户登录与权限验…

C# Winform 侧边栏,切换不同页面

在项目中我们经常遇到需要在主界面上切换不同子页面的需求&#xff0c;常用做法是左侧显示子页面菜单&#xff0c;用户通过点击左侧菜单&#xff0c;实现右边子页面的展示。 实例项目实现&#xff1a; 项目左侧侧边栏实现FlowLayoutPanel使用显示不同子窗体 实例链接&#xf…

部署yum仓库

目录 安装软件包 yum 配置文件 缓存功能操作步骤 创建并配置本地仓库文件 yum相关命令 yum install __ yum repolist yum list __ yum info __ yum search __ yum whatprovides __ yum remove __ yum -y update __ yum history yum grouplist yum groupinstall…

MySQL数据库与基本操作(增删改查)

一、数据库的基本概念 数据库要学习的四个基本概念&#xff0c;主要是&#xff1a;数据、数据库系统、数据库、数据管理系统。数据&#xff08;Date&#xff09;是描述事物的记录&#xff0c;数据库系统&#xff08;DBS&#xff09;&#xff0c;数据库管理系统&#xff08;DBMS…

微服务开发与实战Day08 - Elasticsearch

一、初始Elasticsearch 高性能分布式搜索引擎 1. 认识和安装 1.1 认识 Lucene是一个Java语言的搜索引擎类库&#xff0c;是Apache公司的顶级项目&#xff0c;由DougCutting于1999年研发。官网地址&#xff1a;Apache Lucene - Welcome to Apache Lucene Lucene的优势&…

PaddleOCR学习——PP-OCR系列

相关知识前置&#xff1a; PP-LCNet PP-LCNetV3 PP-LCNetV3系列模型是PP-LCNet系列模型的延续&#xff0c;覆盖了更大的精度范围&#xff0c;能够适应不同下游任务的需要。PP-LCNetV3系列模型从多个方面进行了优化&#xff0c;提出了可学习仿射变换模块&#xff0c;对重参数…

corona渲染器与vray比哪个好?支持云渲染平台吗

​在视觉渲染技术领域&#xff0c;V-Ray和Corona都以其卓越的性能和广泛应用赢得了高度评价。这两款渲染器各有其独特的优势&#xff0c;使得在它们之间做出选择并非易事。不同的应用场景和用户需求可能会让它们各自展现出不同的优势。 一、corona渲染器跟vray怎么样 在比较V-…

制造业为什么需要ERP企业管理软件?

如今&#xff0c;传统的制造业管理方式逐渐变得力不从心~库存积压、生产效率低下、供应链混乱…想象一下&#xff0c;如果你的企业仍然依赖于手工记录订单、库存和财务数据&#xff0c;那么每当市场发生变动时&#xff0c;你就需要花费大量的时间和精力去重新调整生产计划、更新…

派克比例阀

派克比例阀 PARKER比例阀技术特征 阀芯位移反馈设计 阀之间的重复性 故障安全型中位功能 必须调整扭杆以允许&#xff08;秉圣135陈工6653负载3053&#xff09;传感比例阀介入需要时制动回路。但是&#xff0c;要小心液压回路受压时不能调整拉杆。测试应在压力缓慢上升期间…

Github2024-06-12 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4JavaScript项目2Lua项目1PHP项目1Blade项目1非开发语言项目1TypeScript项目1Shell项目1从零开始构建你喜爱的技术 创建周期:2156 天…