②【Maven】从0上手Maven的安装与配置 - 最全教程 (下载 + 配置 + 环境变量 )

news2024/11/29 0:54:09

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

Maven >>> 下载、安装、配置

  • 一、下载Maven核心程序
  • 二、设置本地仓库
    • ⚪为什么
    • ⚪怎么做
  • 三、配置阿里云镜像仓库
    • ⚪为什么
    • ⚪怎么做
  • 四、配置Maven的JDK版本
    • ⚪为什么
    • ⚪怎样做
  • 五、配置环境变量
    • ⚪配置Java环境变量
    • ⚪配置Maven环境变量


一、下载Maven核心程序

  • 通过官方渠道,下载Maven压缩包,官网🔗:maven.apache.org

在这里插入图片描述

  • 进入官网后,选择Download(下载)选项,安装最新版本的压缩包

在这里插入图片描述

  • 将压缩包放置到自己喜欢的目录下,解压:

注意:文件夹目录要求 非中文、无空格。

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

  • 加压后,文件的内容目录如下:

在这里插入图片描述

其中,Maven核心的配置文件是conf目录下的settings.xml文件

在这里插入图片描述


二、设置本地仓库

⚪为什么

  • Maven本地仓库是有默认值的,我们可以从conf\settings.xml文件下找到关于默认本地仓库的描述:
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->

我们从配置文件的这一段注释中,了解到默认仓库的存放目录是:${user.home}/.m2/repository,也就是系统的家目录中,家目录是存放在C盘(系统盘)当中的。

C盘 – 用户 – 用户名 – .m2 – repository
在这里插入图片描述

当我们累计使用的 jar包越来越多,Maven仓库的体积也将越来越大,内存过大会拖慢所在C盘的运行速度,影响系统性能。为了避免这样的结果,我们才需要设置本地仓库的路径,将Maven本地仓库放置在别的盘当中。


⚪怎么做

我们需要在配置文件中加入一行代码,来配置本地仓库:

  <localRepository>d:\maven-repository</localRepository>

localRepository标签中的内容就填写我们自己配置的本地仓库路径,我们只需要手动创建一个空文件夹,将此文件夹的路径复制到标签中即可;
当然不创建也没问题,在标签中设置好路径后,当我们使用本地仓库时,Maven会帮我们创建的~

需要注意的是:本地仓库的目录也要求不包含中文空格


三、配置阿里云镜像仓库

⚪为什么

Maven在下载jar包时,默认会访问境外的中央仓库去进行下载,但是访问国外网站的速度较慢。为了提高访问速度从而提升效率,我们需要将Maven下载jar包时访问的仓库设置为国内阿里云提供的镜像仓库。

  • 默认的中央仓库 - 访问国外网站 - 速度慢
  • 阿里云镜像仓库 - 访问国内网站 - 速度快

⚪怎么做

依旧是打开Maven目录下,conf文件夹中的settings.xml文件,对settings.xml文件中<mirrors></mirrors>标签内的内容进行修改:

  • 默认情况下的mirrors标签内容:
  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
  </mirrors>

——————————

  • 设置完阿里云镜像仓库后的mirrors标签内容:

改动:

  1. 将原本给定的例子注释掉
  2. 加入我们配置的镜像仓库内容(可直接复制)
  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
    <!-- <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
     -->
	<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>central</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>

  </mirrors>

四、配置Maven的JDK版本

⚪为什么

Maven工程默认使用JDK 1.5的版本,而实际上常用的是 JDK 1.8 及以上版本。

⚪怎样做

打开Maven目录下,conf文件夹中的settings.xml文件,对settings.xml文件中<profiles></profiles>标签内的内容进行修改:

  • 默认情况下的profiles标签内容:

全都是注释

  <profiles>
    <!-- profile
     | Specifies a set of introductions to the build process, to be activated using one or more of the
     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
     | or the command line, profiles have to have an ID that is unique.
     |
     | An encouraged best practice for profile identification is to use a consistent naming convention
     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
     | This will make it more intuitive to understand what the set of introduced profiles is attempting
     | to accomplish, particularly when you only have a list of profile id's for debug.
     |
     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
    <profile>
      <id>jdk-1.4</id>

      <activation>
        <jdk>1.4</jdk>
      </activation>

      <repositories>
        <repository>
          <id>jdk14</id>
          <name>Repository for JDK 1.4 builds</name>
          <url>http://www.myhost.com/maven/jdk14</url>
          <layout>default</layout>
          <snapshotPolicy>always</snapshotPolicy>
        </repository>
      </repositories>
    </profile>
    -->

    <!--
     | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
     | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
     | might hypothetically look like:
     |
     | ...
     | <plugin>
     |   <groupId>org.myco.myplugins</groupId>
     |   <artifactId>myplugin</artifactId>
     |
     |   <configuration>
     |     <tomcatLocation>${tomcatPath}</tomcatLocation>
     |   </configuration>
     | </plugin>
     | ...
     |
     | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
     |       anything, you could just leave off the <value/> inside the activation-property.
     |
    <profile>
      <id>env-dev</id>

      <activation>
        <property>
          <name>target-env</name>
          <value>dev</value>
        </property>
      </activation>

      <properties>
        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
      </properties>
    </profile>
    -->
  </profiles>

————————————

  • 配置后的profiles标签内容:

改动:

  1. 添加了设置JDK版本的相关配置(配置在下述代码尾部,可直接复制)
  <profiles>
    <!-- profile
     | Specifies a set of introductions to the build process, to be activated using one or more of the
     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
     | or the command line, profiles have to have an ID that is unique.
     |
     | An encouraged best practice for profile identification is to use a consistent naming convention
     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
     | This will make it more intuitive to understand what the set of introduced profiles is attempting
     | to accomplish, particularly when you only have a list of profile id's for debug.
     |
     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
    <profile>
      <id>jdk-1.4</id>

      <activation>
        <jdk>1.4</jdk>
      </activation>

      <repositories>
        <repository>
          <id>jdk14</id>
          <name>Repository for JDK 1.4 builds</name>
          <url>http://www.myhost.com/maven/jdk14</url>
          <layout>default</layout>
          <snapshotPolicy>always</snapshotPolicy>
        </repository>
      </repositories>
    </profile>
    -->

    <!--
     | Here is another profile, activated by the system property 'target-env' with a value of 'dev',
     | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
     | might hypothetically look like:
     |
     | ...
     | <plugin>
     |   <groupId>org.myco.myplugins</groupId>
     |   <artifactId>myplugin</artifactId>
     |
     |   <configuration>
     |     <tomcatLocation>${tomcatPath}</tomcatLocation>
     |   </configuration>
     | </plugin>
     | ...
     |
     | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to
     |       anything, you could just leave off the <value/> inside the activation-property.
     |
    <profile>
      <id>env-dev</id>

      <activation>
        <property>
          <name>target-env</name>
          <value>dev</value>
        </property>
      </activation>

      <properties>
        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
      </properties>
    </profile>
    -->

	<profile>
	  <id>jdk-1.8</id>
	  <activation>
		<activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	  </activation>
	  <properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	  </properties>
	</profile>

  </profiles>

五、配置环境变量

——————————————

⚪配置Java环境变量

Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,学习过Java的同学应该都配置过Java环境变量,可以直接跳过这一步。

如果还未下载JDK,配置Java环境变量,可以参考这篇文章:JDK安装+配置环境变量

检查

Win+R 输入 cmd 进入命令指示符界面,使用以下指令检查:

java -version
echo %JAVA_HOME%

在这里插入图片描述


⚪配置Maven环境变量

  • 打开之间下载解压好的Maven文件目录,复制路径进行备用:

在这里插入图片描述

👇

  • 打开计算机高级系统设置,选择环境变量,新建MAVEN_HOME:

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

👇

  • 系统变量选择Path进行编辑,在Path环境当中增加一个MAVEN_HOME的bin目录:
%MAVEN_HOME%\bin

在这里插入图片描述

👇
检查

Win+R 输入 cmd 进入命令指示符界面,使用以下指令检查:

mvn -v

在这里插入图片描述

————

如果出现以下提示:
在这里插入图片描述
说明没有读取到环境变量

👇

  • 在用户变量的Path环境变量也添加MAVEN_HOME,之后再检查一次:
%MAVEN_HOME%\bin

在这里插入图片描述


到了这里,我们就成功从0完成了Maven的下载,安装以及配置啦~
恭喜!

在这里插入图片描述

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

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

相关文章

jenkins关联github

将Jenkins和github关联起来&#xff0c;实现自动化集成 GitHub侧 1、生成secret.txt secret在github上被称为token 进去GitHub --> Settings --> Developer settings --> Personal access tokens -> Generate new token创建一个新的token,勾选两处标红的地方 点…

Flutter高仿微信-第58篇-扫一扫

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; //二维码扫一扫 Future _scanQR() async {try {final re…

外设驱动库开发笔记49:BY25Qxx存储器驱动

在有一些应用中&#xff0c;我们可能需要大一些容量的存储单元&#xff0c;而实现的形式多种多样&#xff0c;在这一篇中我们将来讨论怎么使用BY25QXXX系列NOR FLASH存储器的问题。 1、功能概述 在开始实现BY25QXXX系列NOR FLASH存储器的驱动之前&#xff0c;我们需要先了解一…

Mysql-解决创建存储函数This function has none of DETERMINISTIC

问题 当二进制日志启用后&#xff0c;这个变量就会启用。它控制是否可以信任存储函数创建者&#xff0c;不会创建写入二进制日志引起不安全事件的存储函数。 如果设置为0&#xff08;默认值&#xff09;&#xff0c;用户不得创建或修改存储函数&#xff0c;除非它们具有除CRE…

COLMAP生成MVSNet数据集

一. colmap2mvsnet.py COLMAP可以给图像数据集标定一套相机外参及视图选择。如果想用COLMAP导出的结果输入MVSNet测试&#xff0c;需要把数据集&#xff08;图片、相机参数等&#xff09;转化为MVSNet的输入格式。MVSNet的作者yaoyao在Github上提供了colmap2mvsnet.py代码&…

Java内存区域

目录复制 Java内存区域区域划分内存溢出异常区域划分 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规格》的规定&#xff0c;Java虚拟机所管理的内存包括以下几个运行时数据区域。 线程独占的有&#xff1a;程序计数器…

《web课程设计》 基于HTML+CSS+JavaScript实现中国水墨风的小学学校网站模板(6个网页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

[附源码]SSM计算机毕业设计网上零食商城JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Spring | 一文带你掌握IOC技术

&#x1f451; 博主简介&#xff1a;    &#x1f947; Java领域新星创作者    &#x1f947; 阿里云开发者社区专家博主、星级博主、技术博主 &#x1f91d; 交流社区&#xff1a;BoBooY&#xff08;优质编程学习笔记社区&#xff09; 文章目录IOC 控制反转1、概念2、分析…

无线传感器网络:传输层

文章目录Challenges for Transport LayerEnd-to-End MeasuresApplication-Dependent OperationEnergy ConsumptionConstrained Routing/AddressingBiased ImplementationReliable Multi-Segment Transport (RMST) ProtocolPump Slowly, Fetch Quickly (PSFQ) ProtocolPump Oper…

超详细的PHP入门知识点讲解

目录 一、简介 二、php基本语法 二、变量和作用域 三、常量 四、数据类型 五、运算符 六、流程控制 七、超全局变量 一、简介 基础知识&#xff1a; 需要一定的html和css的语法知识 基本概念&#xff1a; PHP&#xff08;超文本预处理器&#xff09;是一种通用开源脚本…

汽车销量数据库(分车型、分品牌月度销量数据 2005-2021)

1、数据来源&#xff1a;汽车工业协会 2、时间跨度&#xff1a;2005年1月-2021年5月 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; 该份数据包含全国各种汽车销量数十个相关指标&#xff01; 该份数据包含如下指标&#xff1a; 轿车&#xff1a;一汽大众、上海大…

TMS Sphinx Alexandria Full Source

TMS Sphinx Alexandria Full Source 用于身份访问管理的TMS Sphinx Delphi框架&#xff0c;包括授权和身份验证。 TMS Sphinx允许您为多个应用程序实现单点登录(SSO)&#xff1a;web、本机、移动或机器到机器API通信。它可用于通过登录表单、类似的用户界面和基于服务的身份验证…

「低代码」跑通现代BI“最后一公里”的背后

文|智能相对论 作者|沈浪 “未来不懂低代码就和二十年前不会用word一样。未来80%的应用会由业务人员通过低代码开发。”在2022云栖大会上&#xff0c;阿里云智能总裁张建锋对低代码的发展前景依旧保持着非常积极的态度。 无独有偶&#xff0c;微软中国CTO韦青在他的专栏《万…

100天精通Python(数据分析篇)——第66天:Pandas透视表基础+实战案例(pivot_table函数)

文章目录每篇前言一、透视表基础参数说明实战案例0. 导入Excel数据1. data2. index3. values4. columns5. aggfunc6. fill_value7. dropna8. margins9. margins_name10. observed11. sort每篇前言 &#x1f3c6;&#x1f3c6;作者介绍&#xff1a;Python领域优质创作者、华为云…

linux dolphin为tags协议服务的进程意外退出,kioslave5已经意外关闭

刚开始用archlinux的使用的是dolphin感觉还是挺好用的。不过最近不知道为什么dolphin每次打开都会弹出个错误&#xff0c;很影响效率和心情。我简单的搜索报错代码&#xff0c;也没有成功解决报错。于是打算重新安装一个文件管理器做替换。 现象 运行dolphin或者运行浏览器中…

在PyCharm快速加载第三方模块的设置方法

在《小白学Python》慕课中说明了多种加载第三方模块的方法&#xff0c;这里补充一个在PyCharm中更为方便设置国内镜像源加载的方法。 因为默认情况下&#xff0c;PyCharm是加载国外网站的模块资源&#xff0c;因此常常会因为网络不稳定导致加载失败。因此&#xff0c;可以设置…

基于JAVA的学校图书管理系统(Swing+GUI)

目 录 第1章 绪论 1 1.1系统开发背景和意义 1 1.2系统可行性研究 1 1.3系统开发目标 2 1.4开发平台、运行环境 2 第2章 相关技术概述 3 2.1Java语言简介 3 2.2 Sqllite技术简介 4 2.3 Swing技术简介 5 第3章 需求分析 6 3.1 设计目标 6 3.2 功能分析 6 3.2.1 用户管理 6 3.2.2 …

深度学习day01

Marchine leariing 机器学习就是自动找函式 告诉机器要找的函式用 Supervised Learning 函式的Loss ——评价函式的好坏 Reinforcement就是让机器自己下象棋&#xff0c;输赢自己尝试&#xff0c;没像监督学习那样有人为规定 给函式寻找范围&#xff1a; 函式寻找方法——…

基于STM32实现USB组合设备CDC+MSC正确打开方式

摘要&#xff1a; 前一段时间对无刷电机的驱动有了兴趣&#xff0c;移植了odrive和simpleFOC代码&#xff0c;里面有关于stm32实现USB复合的实例&#xff0c;最近也有打算在electronbot里实现U盘通讯来实现bootloader和语音文件的拷贝和管理。看了网上也有相关实现文章&#x…