Maven入门(作用,安装配置,Idea基础maven,Maven依赖,Maven构建项目)【详解】

目录

一. Maven的作用    

1.依赖管理

2.统一项目结构

3.项目构建

二.Maven安装配置

1. Maven的仓库类型

2 加载jar的顺序

3. Maven安装配置

 4.安装Maven

5.配置仓库

三.idea集成maven

1.给当前project集成maven

2.给新建project集成maven

3.创建maven项目

4.pom.xml说明

四.Maven管理依赖

1. 引入依赖【重点】

2.依赖范围

3. 使用示例

4. 依赖传递

五.Maven构建项目

1 常见的构建命令:

2 构建项目

3. 项目构建的生命周期

 Maven:中文翻译是“专家”、“内行“,它是Apache提供的免费开源的项目管理和构建工具

官网:Maven – Welcome to Apache Maven

一. Maven的作用    

  • 依赖管理

  • 统一项目结构规范

  • 构建项目

1.依赖管理

一个企业级项目通常要依赖大量的jar包,这会导致一些问题的产生,比如:

  • 需要自己查找、下载、导入jar包到项目

  • jar包之间可能会产生冲突

2.统一项目结构

        使用不同的IDE工具创建的项目结构是不同的,这会导致代码上也会出现差异。而maven提供了标准的、统一的项目结构,屏蔽了开发工具造成的差异。

3.项目构建

        Maven提供了一套标准的、跨平台的自动化项目构建方式,它只需要通过简单的命令就能够对项目进行编译、测试、打包、安装、发布等等一系列的操作,实现一键构建项目。

无论是开发人员,还是测试、运维人员,maven都可以提供有力的工作支撑。

二.Maven安装配置

1. Maven的仓库类型

仓库类型:

根据仓库所在的位置不同,可分为:

  • 本地仓库:

    • 本地缓存jar包的文件夹

    • 本地仓库默认在:C:\Users\电脑的用户名\.m2\repository

    • 通常会修改配置文件,修改本地仓库的路径

  • 远程仓库(私服):

    • 一些企业、组织、社区搭建的仓库服务,私服里的jar包大多数还是来自于中央仓库

    • 有些是企业内部自己搭建、自己使用的;

  • 中央仓库

    • 是Maven官方团队维护的仓库,里边有最全的开源jar包。

      但是没有授权的jar包,中央仓库里没有,比如:Oracle驱动包

    • 地址:Central Repository:

2 加载jar的顺序

maven加载jar包的顺序:

  1. maven只会从本地仓库里查找并加载jar包。如果本地仓库里找不到jar包,就会:

    • 如果配置了远程仓库,就从远程仓库里查找jar包,下载到本地仓库

    • 如果没有配置远程仓库,就从中央仓库里查找jar包,下载到本地仓库

  2. 然后maven仍然是从本地仓库中加载jar包

3. Maven安装配置

下载Maven:3.5.x或3.6.x都可以

  • 各个版本的下载地址:Index of /dist/maven/maven-3

    maven3.6.1下载地址:Index of /dist/maven/maven-3/3.6.1/binaries

    Windows系统下载 .zip

    Mac系统下载 .tar.gz

  • Maven的目录结构:

          |--bin   Maven的可执行命令文件夹
          |--boot  Maven的引导程序(类加载器)
          |--conf  配置文件夹
          |--lib   Maven的核心程序代码

 4.安装Maven

        注意:我们使用的maven3.5 或maven3.6版本,依赖于jdk11;过高版本的jdk,会导致maven运行出错;

        1.解压Maven

        Maven是免安装的,直接解压即可。但是要注意:解压路径里,不要有中文、空格、特殊字符。例如,我的maven解压到了C:/programs/apache-maven

        2.配置Maven环境变量

                增加MAVEN_HOME=Maven的解压目录。要注意:这个解压目录必须是 里边有bin、conf等等那些文件夹

修改Path中添加 %MAVEN_HOME%\bin

        3.验证Maven配置

        打开cmd,输入命令:mvn -versionmvn -v,如果正常输出maven版本信息,说明maven安装成功

5.配置仓库

1.配置Aliyun镜像地址

        我们的maven没有私服,所以本地仓库里没有的jar包,maven会直接从中央仓库里查找下载。而中央仓库服务器在国外,速度慢且不稳定,经常会下载失败。

        Aliyun提供了maven仓库镜像服务,我们把Aliyun的镜像服务地址配置给maven,就会从阿里云下载jar包,速度很快。

<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>

2.配置本地仓库

        默认情况下,maven会使用C:\Users\liuyp\.m2\repository作为本地仓库。如果你的C盘比较小,可以自定义本地仓库的路径。

配置方式:

  1. 打开maven里的conf/settings.xml

  2. 增加配置<localRepository>本地仓库路径</localRepository>

三.idea集成maven

        注意:在File-Settings里配置,同时在File-OtherSettings-Settings for New projects里也配置

1.给当前project集成maven

        配置Maven

增加运行的参数:-DarchetypeCatalog=local,让Maven从本地仓库加载骨架信息;选择使用JDK11

2.给新建project集成maven

        上面仅仅针对当前打开的project有效。如果再新建project的话,maven仍然是未配置状态,还需要再次集成。所以这里做一下全局的maven集成,后期再创建新project时,maven也会默认生效。

在这里配置maven和Runder

3.创建maven项目

后期每次创建一个项目,全部都创建成project

        创建Project

坐标:被maven管理的所有项目包括jar包,都必须一个唯一标识。这个唯一标识就是坐标

坐标由三部分组成:

  • groupId:通常是公司或组织的域名倒写。例如:com.itheima, com.jd

  • artifactId:项目名

  • version:版本号

4.pom.xml说明

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 当前项目的坐标 --><groupId>com.itheima</groupId><artifactId>day04-maven-project1</artifactId><version>1.0-SNAPSHOT</version><!-- 打包方式。常用的有jar和war。如果不设置,默认是jar --><packaging>jar</packaging><!-- 项目的一些属性参数配置 --><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>

四.Maven管理依赖

1. 引入依赖【重点】

        如果项目中需要使用jar包,只需要把jar包的坐标配置到项目的pom.xml中即可。在pom.xml的<dependencies>标签里增加依赖坐标

        可以使用 alt+insert,会弹出依赖导入的界面,可以从本地仓库里搜索依赖

        如果不知道依赖的坐标,可以从中央仓库搜索坐标:https://mvnrepository.com/

2.依赖范围

        如果项目中引入的jar包过多,可能会出现jar包冲突,我们可能设置jar包不同的依赖范围来处理jar包冲突。

        

Maven的依赖范围有:

  • compile:默认的依赖范围,全范围有效。

  • test:单元测试有效。src/test里有效,src/main里无效。打包时会忽略

  • provided:编译时有效,运行时使用其它地方提供的jar包。备胎。打包时会忽略

  • runtime:运行时有效,编译时无效。比如:数据库驱动包

  • system:引入仓库之外的本地jar包。少用

实际开发中特殊的jar包

  • Junit:依赖范围通常设置为test

  • servlet-api, jsp-api:依赖范围通常设置为provided

  • 数据库驱动包:依赖范围可以是默认的,也可以是runtime

  • 其它包,绝对多数都是默认依赖范围

3. 使用示例

        如果项目中要使用单元测试和logback,就添加依赖两者的依赖坐标。最终pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 当前项目的坐标 --><groupId>com.itheima</groupId><artifactId>day04-maven-project1</artifactId><version>1.0-SNAPSHOT</version><!-- 项目的一些属性参数配置 --><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 项目依赖 --><dependencies><!--单元测试的依赖。依赖范围test--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!--logback的依赖。依赖范围 默认的compile--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version></dependency></dependencies>
</project>

4. 依赖传递

        1.依赖传递:

          maven中添加的依赖是具有传递性的,即:项目依赖于A,而A依赖于B,maven会将A和B都帮我们导入进来。例如:刚刚我们添加了junit和logback两个坐标,而实际上导入了5个依赖。

        

        2.依赖冲突的处理:

依赖传递可以帮我们减少pom.xml的代码量,但是也可能会造成依赖冲突。例如:

  • 项目依赖于A,A依赖于X(v1版本)

  • 项目依赖于B,B依赖于X(v2版本)

要想解决依赖冲突,可以使用maven的exclusions标签:

<!--logback的依赖--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version><exclusions><!--排除掉 间接引用进来的slf4j-api--><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion></exclusions></dependency><!--我们自己添加要引入的slf4j-api的坐标 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.22</version></dependency>

五.Maven构建项目

1. 在idea里构建项目

        对项目代码进行编译、测试、打包、安装、发布等等一系列的操作过程,叫构建

maven可以通过命令,实现一键构建项目

1 常见的构建命令:

  • clean:清理。把之前编译的结果(target文件夹)删除掉

  • compile:编译。编译项目内src\main里的主体代码,编译结果会放到自动生成的target文件夹里

  • test:单元测试。编译并执行src\test里的单元测试代码

  • package:打包。把编译结果制作成程序包。

    如果打包方式是war,就打成war包

    如果打包方式是jar,或者没有配置打包方式,就打成jar包

  • install:安装。把程序包安装到本地仓库

  • deploy:发布。把程序包发布到私服上

2 构建项目

        方式一:直接点击按钮   

  1. 在idea右侧点击maven,在弹出的窗口中刷新一下

  2. 找到要操作的项目,在Lifecycle中找到要执行的命令,双击即可执行

方式二:输入命令执行

3. 项目构建的生命周期

Maven的三套生命周期:

  1. 清理生命周期:CleanLifeCycle

    有常用命令:clean

  2. 默认生命周期(构建生命周期):DefaultLifeCycle

    有常用命令:compile->test->package->install->deploy

  3. 站点生命周期:SiteLifeCycle

    有常用命令:site。生成Maven项目的描述信息文档

生命周期的作用:如果执行了一个目标命令:Maven会把生命周期里的命令,从第一个一直执行到目标命令为止

        

        

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

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

相关文章

二维码门楼牌管理系统应用场景:地方社区管理的新利器

文章目录 前言一、地方社区管理部门的门牌信息利用二、与社区管理部门的联动效应三、结论 前言 随着信息技术的不断发展&#xff0c;二维码门楼牌管理系统逐渐成为地方社区管理的新宠。该系统通过集成二维码技术与门楼牌信息&#xff0c;为社区管理带来了前所未有的便利与高效…

Github 2024-03-07Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-03-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1Harbor - 开源的云原生注册表项目 创建周期:2908 天开发语言:Go协议类型:Apache License 2.0Star数量:21549 个For…

uniapp 解决请求出现 /sockjs-node/info?t=问题

1. uniapp请求出现 /sockjs-node/info?t问题 1.1. 问题 uniapp项目老是出现 http://192.168.2.106:8080/sockjs-node/info?t1709704280949 1.1. sockjs-node介绍 sockjs-node 是一个JavaScript库&#xff0c;提供跨浏览器JavaScript的API&#xff0c;创建了一个低延迟、全…

selinux规则

selinux状态 相关命令 进程要和文件的安全上下文相匹配&#xff0c;进程才能打开文件 查找这个命令从哪个安装包来的用 yum provides 命令 进程httpd 必须与ls -Z的文件类型一致&#xff0c;要不然在强制模式下面&#xff0c;打开不了 在终端2用此命令&#xff0c;把文件类型改…

【有趣】带照明灯的自行车“铃”

这个自行车“铃”发出的不是令行人刺耳讨厌的金属铃声&#xff0c;而是礼貌友好的“请让路&#xff0c;谢谢&#xff01;”声&#xff0c;新颖而有趣&#xff1b;照明灯则为夜间骑车带来方便&#xff0c;既保安全而又实用。整个装置成本不足10元&#xff0c;制作和安装使用也都…

微信小程序用户登陆和获取用户信息功能实现

官方文档&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 接口说明&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html 我们看官方这个图&#xff0c;梳理一下用户…

本地项目推送到腾讯云轻量应用服务器教程(并实现本地推送远程自动更新)

将本地项目上传到腾讯云轻量应用服务器并实现后续的推送更新&#xff0c;具体步骤如下&#xff1a; 在本地项目目录下初始化 Git 仓库&#xff1a; cd 项目目录 git init将项目文件添加到 Git 仓库并提交&#xff1a; git add . git commit -m "Initial commit"在…

git 命令怎么回退到某个特定的 commit 并将其推送到远程仓库?

问题 不小心把提交的名称写错提交上远程仓库了&#xff0c;这里应该是 【029】的&#xff0c;这个时候我们想回到【028】这一个提交记录&#xff0c;然后再重新提交【029】到远程仓库&#xff0c;该怎么处理。 解决 1、首先我们找到【028】这条记录的提交 hash&#xff0c;右…

瑞芯微第二代8nm高性能AIOT平台 RK3576 详细介绍

RK3576处理器 RK3576瑞芯微第二代8nm高性能AIOT平台&#xff0c;它集成了独立的6TOPS&#xff08;Tera Operations Per Second&#xff0c;每秒万亿次操作&#xff09;NPU&#xff08;神经网络处理单元&#xff09;&#xff0c;用于处理人工智能相关的任务。此外&#xff0c;R…

teknoparrot命令行启动游戏

官方github cd 到teknoparrot解压目录 cd /d E:\mn\TeknoParrot2_cp1\GameProfiles启动游戏 TeknoParrotUi.exe --profile游戏配置文件游戏配置文件位置/UserProfiles,如果UserProfiles文件夹里没有那就在/GameProfiles,在配置文件里将游戏路径加入之间,或者打开模拟器设置 …

基于ACM32 MCU的两轮车充电桩方案,打造高效安全的电池管理

随着城市化进程的加快、人们生活水平的提高和节能环保理念的普及&#xff0c;越来越多的人选择了电动车作为代步工具&#xff0c;而两轮电动车的出行半径较短&#xff0c;需要频繁充电&#xff0c;因此在城市中设置两轮车充电桩就非常有必要了。城市中的充电桩不仅能解决两轮车…

python+django+vue房屋租赁系统 8gwmf

房屋租赁系统在设计与实施时&#xff0c;采取了模块性的设计理念&#xff0c;把相似的系统的功能整合到一个模组中&#xff0c;以增强内部的功能&#xff0c;减少各组件之间的联系&#xff0c;从而达到减少相互影响的目的。如房源信息、预约信息、求租信息模块等[12]。 管理员后…

springcloud:3.7测试线程池服务隔离

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用&#xff1a;http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http://t…

[Redis]——数据一致性,先操作数据库,还是先更新缓存?

目录 一、操作缓存和数据库时有三个问题需要考虑&#xff1a; 1.删除缓存还是更新缓存&#xff1f; 2.如何保证缓存与数据库的操作同时成功或失效 3.先操作缓存还是先操作数据库&#xff08;多线程并发问题&#xff09; 二、 缓存更新的最佳策略 一、操作缓存和数据库时有…

深度学习-多层神经网络

文章目录 多层深度神经网络一.黑箱&#xff1a;深层神经网络的不可解释性二.多元神经网络&#xff1a; 层与 h ( z ) h(z) h(z)三.激活函数 多层深度神经网络 从单层到多层是神经网络发展史上的重大变化&#xff0c;层的增加彻底将神经网络的性能提升到了另一个高度&#xff0…

AI智商排名:Claude-3首次突破100

用挪威门萨&#xff08;智商测试题&#xff09;中 35 个问题对chatGPT等人工智能进行了测试&#xff1a; ChatGPT 对ChatGPT进行了两次挪威门萨测试&#xff0c;在 35 个问题中&#xff0c;它平均答对了 13 个&#xff0c;智商估计为 85。 测试方法 每个人工智能都接受了两次…

MATLAB知识点:循环语句的经典练习题

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 下面我们来看…

贷齐乐错误的waf引起的SQL注入漏洞复现

君衍. 一、环境介绍1、第一道WAF2、第二道WAF 二、环境部署1、模拟源码2、连接数据库源码3、数据库创建4、测试 三、源码分析1、模拟WAF2、注入思路3、PHP下划线特性4、完成假设 四、联合查询注入1、测试回显字段2、爆出库名3、爆出表名4、爆出表下的列名4、爆出flag 一、环境介…

CleanMyMac X4.14.7永久免费Mac电脑清理和优化软件

CleanMyMac X 是一款功能强大的 Mac 清理和优化软件&#xff0c;适合以下几类人群使用&#xff1a; 需要定期清理和优化 Mac 的用户&#xff1a;随着时间的推移&#xff0c;Mac 设备上可能会积累大量的无用文件、缓存和垃圾&#xff0c;导致系统运行缓慢。CleanMyMac X 的智能扫…

【Java JVM】Class 文件

Java 的口号 “一次编写, 到处运行 (Write Once, Run Anywhere)” 的基础: JVM 和 所有平台都统一支持的程序存储格式 – 字节码 (Byte Code)。 只要在对应的平台安装对应的 JVM, 将我们编写的源码编译为 Class 文件, 就能达到了一次编写, 导出运行的目标, 中间的所有细节由不同…