详解Maven下载安装及IDEA配置Maven (2023最新)
Posted 三月枫火
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解Maven下载安装及IDEA配置Maven (2023最新)相关的知识,希望对你有一定的参考价值。
文章目录
一、Maven介绍
1.Maven翻译为“专家“, ”内行”的意思,是著名Apache公司下基于Java开发的开源项目。
2.Maven项目对象模型(POM)是一个项目管理工具软件,可以通过简短的中央信息描述来管理项目的搭建,报告和文档等步骤。
3.Maven是一个项目管理的工具,可以对项目进行构建、依赖的管理。
PS:通俗的讲maven就是专门用于构建和管理项目的工具,他可以帮助我们去下载我们所需要jar包,帮助我们去管理项目结构,帮助我们去实现项目的维护、打包等等…(Gradle的项目搭建方式,可能将在不久的未来取代Maven,发展历程: Make –> Ant –> Maven –> Gradle)
二、下载Maven
Maven下载官网:http://maven.apache.org/docs/3.3.1/release-notes.html
1、左侧或右上角点击 Download
2、下载第二个Binary zip archive
对应的Link
3、下载其他版本,点击下面的 archives
4、再选择你想要下载的Maven版本(下面以maven3.6.3为例)
5、选择下载maven3.6.3后,点击 binaries/
7、选择 apache-maven-3.6.3-bin.zip ,完成之后得到安装包
三、配置Maven环境
1、将下载好的压缩包,解压至你想要安装的目录下,并复制Maven的根目录(以apache-maven-3.6.3为例)。
2、配置环境变量
此电脑>属性>高级系统设置>环境变量
新建添加如下:
2.1 变量名:
MAVEN_HOME
2.2 变量值:
E:\\configurations\\Maven\\apache-maven-3.6.3 (自己Maven安装的根目录)
2.3 在Path中新建添加:
%MAVEN_HOME%\\bin
3、启动CMD命令工具,输入:
mvn -v
出现上述界面,则表示成功安装Maven
4、修改仓库位置
在开发Maven项目过程中会下载非常多的jar包,而Maven默认的下载位置在C盘,导致C盘很容易撑爆,且C盘容易损毁。
1)默认的Maven仓库位置为:
C:\\Users.m2\\repository
2)在其他盘符再创建用于Maven仓库的文件夹(E:\\Repositories\\Mavan)
存放Maven下载的jar包(PS:仓库文件夹名字可随意设置)
打开Maven安装目录下的 conf/settings.xml
文件
找到 <localRepository>
标签,在标签下添加你刚创建的Maven仓库文件夹根目录,如:
<localRepository>E:\\Repositories\\Mavan</localRepository>
5、 修改Maven仓库下载镜像
如果直接以默认Maven的方式搭建Java项目时,下载所需的jar包需要的时间比较长。(PS:下载慢的原因是服务器在国外,要翻墙才能下载,大约速度在0.9K/s的下载速度),所以我们安装好Maven时,要及时的修改Maven下载的镜像地址,最好改为国内的下载镜像,例如阿里云中央仓库,华为云中央仓库。
1)再在setting.xml文件中找到 <mirrors>
标签,在标签下添加阿里云镜像仓库:
<mirrors>
<!-- 阿里云仓库 -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
6、 指定Maven 的jdk 版本(如 jdk1.8)
<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>
四、在Idea上配置Maven工具
打开我们的开发工具Idea,在setting中搜索maven
其他实用文章:
1、详解Tomcat下载安装以及IDEA配置Tomcat:https://blog.csdn.net/m0_48170265/article/details/129073985
2、详解JDK1.8等版本安装及配置:https://blog.csdn.net/m0_48170265/article/details/129070240
Maven 基本使用及依赖管理。
目录
一、Maven 基本介绍
1、主要功能
Maven是专门用于管理和构建Java项目的工具,它的主要功能有:
- 提供了一套标准化的项目结构
- 提供了一套标准化的构建流程(编译,测试,打包,发布……)
- 提供了一套依赖管理机制
2、标准化的项目结构:
项目结构我们都知道,每一个开发工具(IDE )都有自己不同的项目结构,它们互相之间不通用。我再 eclipse 中创建的目录,无法在idea 中进行使用,这就造成了很大的不方便, 而 Maven 提供了一套标准化的项目结构,所有的 IDE 使用 Maven 构建的项目完全一样,所以 IDE 创建的 Maven 项目可以通用。 Maven构建的项目结构:标准化构建流程:
我们开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。
依赖管理:
依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。如之前我们项目中需要使用JDBC和Druid的话,就需要去网上下载对应的依赖包(当前之前是老师已经下载好提供给大家了),复制到项目中,还要将jar包加入工作环境这一系列的操作。
而Maven使用标准的 坐标 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。如下图右边所示就是mysql驱动包的坐标,在项目中只需要写这段配置,其他都不需要我们担心,Maven都帮我们进行操作了。
3、基本介绍
▶ 简介
Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
▶ Maven 模型
紫色框框起来的部分,他就是用来完成 `标准化构建流程` 。如我们需要编译,Maven提供了一个编译插件供我们使用,我们需要打包,Maven就提供了一个打包插件提供我们使用等。
紫色框起来的部分,项目对象模型就是将我们自己抽象成一个对象模型,有自己专属的坐标 。
▶ Maven项目
依赖管理模型则是使用坐标来描述当前项目依赖哪儿些第三方jar包,如下图所示:
4、仓库
▶ 仓库的分类
用于储存各种资源,包含各种jar包
▷ 本地仓库:自己计算机上的存储资源的一个仓库,连接远程仓库获取资源。
▷ 中央仓库:由Maven团队维护的全球唯一的仓库
● 地址: https://repo1.maven.org/maven2/
▷ 远程仓库(私服):一般由公司团队搭建的私有仓库,从中央仓库获取资源
● 私服的作用:
保存具有版权的资源,包含购买或自主研发的 jar,中央仓库中的jar都是开源的,不能存储具有版权的资源。私服只在一定范围内共享资源,仅对内部开放,不对外共享。
▶ 配置仓库
▷ 本地仓库
● maven启动后,默认资源下载到本地仓库,默认位置:
<localRepository>$user.home/.m2/repository</localRepository>
● 自定义位置:
<localRepository>D:\\maven\\repository</localRepository>
▷ 远程仓库
● 默认连接远程仓库的位置
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
▷ 镜像仓库
● 配置阿里云镜像仓库
<mirrors> <!-- 配置具体的仓库的下载镜像--> <mirror> <!-- 此镜像的唯一标识符,用来区分不同的mirror元素--> <id>nexus-aliyun</id> <!-- 对哪种仓库进行镜像,简单来说就是替代哪个仓库--> <mirrorOf>central</mirrorOf> <!-- 镜像名称--> <name>Nexus aliyun</name> <!-- 镜像URL --> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> </mirrors>
▶ 全局setting 与 用户setting 的区别
● 全局setting 定义了当前计算器中Maven 的公共配置
● 用户setting 定义了当前用户的配置
▶ 访问顺序
当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
* 如果有,则在项目直接引用;
* 如果没有,则去中央仓库中下载对应的jar包到本地仓库。
如果还可以搭建远程仓库,将来jar包的查找顺序则变为:
* 本地仓库 --> 远程仓库--> 中央仓库
二、Maven 安装配置
1、下载安装
下载压缩包,然后解压 (如:apache-maven-3.6.1.rar) 既安装完成,建议解压缩到没有中文、特殊字符的路径下。
解压缩后的目录结构如下:
▷ bin目录 : 存放的是可执行命令。mvn 命令重点关注。
▷ conf目录 :存放Maven的配置文件。`settings.xml` 配置文件后期需要修改。
▷ lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。2、配置环境变量
▷ `此电脑` 右键 --> 属性 --> `高级系统设置` --> `高级` --> `环境变量`
▷ 在 `Path` 中进行配置:
▷ 打开命令提示符进行验证,出现如图所示表示安装成功
▷ 配置本地仓库
修改 conf/settings.xml 中的 <localRepository> 为一个指定目录作为本地仓库,用来存储jar包。
▷ 配置阿里云私服
中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。修改 conf/settings.xml 中的 <mirrors>标签,为其添加如下子标签:
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
3、Maven 基本使用
▶ 常用命令
- compile :编译
- clean:清理
- test:测试
- package:打包
- install:安装
▶ 项目结构
Maven构建的项目,项目结构如下:
而我们要使用上面命令需要在磁盘上进入到这个项目的 `pom.xml` 目录下,打开命令提示符(按住shift 再点击鼠标右键才能打开下列的命令提示符 Windows PowerShell)
▶ compile :编译
命令行执行 mvn compile 可以看到:
▷ 从阿里云下载编译需要的插件的jar包,在本地仓库也能看到下载好的插件
▷ 在项目下会生成一个 `target` 目录同时在项目下会出现一个 `target` 目录,编译后的字节码文件就放在该目录下:
▶ clean:清理
执行 mvn clean 命令可以看到
▷ 从阿里云下载清理需要的插件jar包
▷ 删除项目下的 `target` 目录▶ test:测试
mvn test 该命令会执行所有的测试代码。执行上述命令效果如下
▶ package:打包
执行 mvn package 命令可以看到:
▷ 从阿里云下载打包需要的插件jar包
▷ 在项目的 `terget` 目录下有一个jar包(将当前项目打成的jar包)▶ install:安装
mvn install 该命令会将当前项目打成jar包,并安装到本地仓库。执行完上述命令后到本地仓库查看结果如下:
▶ maven项目 和 web项目 结构区分
三、IDEA中使用Maven
1、IDEA中配置Maven
设置 IDEA 使用本地安装的 Maven,并修改配置文件路径
2、Maven坐标
▶ 坐标?
Maven 中的坐标是资源的唯一标识,使用坐标来定义项目或引入项目中需要的依赖
▶ Maven 坐标主要组成
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
version:定义当前项目版本号packaging : 定义该项目的打包方式
▶ 注意
上面所说的资源可以是插件、依赖、当前项目。我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。
▶ 插件
Tomcat7 运行插件
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>80</port> <path>/</path> </configuration> </plugin> </plugins> </build>
3、创建及导入项目
▶ 创建项目
填写模块名称,坐标信息,点击finish,创建完成
创建好的项目目录结构如下:
▶ 导入项目
选择右侧Maven面板,点击 + 号
选中对应项目的pom.xml文件,双击即可
如果没有Maven面板,选择
View --> Appearance --> Tool Window Bars
可以通过下图所示进行命令的操作:
4、配置 Maven-Helper 插件
▷ 选择 IDEA中 File --> Settings
▷ 选择 Plugins
▷ 搜索 Maven,选择第一个 Maven Helper,点击Install安装,弹出面板中点击Accept
▷ 重启 IDEA
安装完该插件后可以通过 选中项目右键进行相关命令操作,如下图所示:
四、依赖管理
1、依赖配置
▶ 依赖配置
● 依赖指当前项目运行所需要的 jar 包, 一个项目可以设置多个依赖
● 格式:
<!-- 设置当前项目所依赖的所有 jar--> <dependencies> <!-- 设置具体依赖--> <dependency> <!-- 设置依赖所属群组id--> <groupId>junit</groupId> <!-- 依赖所属项目id--> <artifactId>junit</artifactId> <!-- 依赖版本号--> <version>4.12</version> </dependency> </dependencies>
▶ 依赖传递
● 依赖具有传递性:
○ 直接依赖:在当前项目中通过依赖配置建立的依赖关系
○ 间接依赖: 被资源的 资源如果依赖其他资源,当前项目间接依赖其他资源
▶ 依赖传递冲突
● 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
● 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
● 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
▶ 可选依赖
可选依赖指对外隐藏当前所依赖的资源--不透明
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <optional>true</optional> </dependency>
▶ 排除依赖
排除依赖指主动排除依赖资源,被排除 的资源无需指定版本--不需要
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency>
2、使用坐标导包
在项目的 pom.xml 中编写 <dependencies> 标签,在 <dependencies> 标签中 使用 <dependency> 引入坐标,定义坐标的 groupId,artifactId,version
点击刷新按钮,使坐标生效
注意:
▷ 具体的坐标我们可以到网站进行搜索:https://mvnrepository.com/▶ 快捷方式导入jar包的坐标
在 pom.xml 中 按 alt + insert,选择 Dependency
在弹出的面板中搜索对应坐标,然后双击选中对应坐标,点击刷新按钮,使坐标生效
▶ 自动导入设置
选择 IDEA中 File --> Settings
在弹出的面板中找到 Build Tools
选择 Any changes,点击 ok 即可生效
3、依赖范围
通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。如下图所示给 `junit` 依赖通过 `scope` 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。
那么 `scope` 都可以有哪些取值呢?
作用范围:
● 主程序范围有效 (main 文件夹范围内)
● 测试程序范围有效 (test 文件夹范围内)
● 是否参与打包 (package 指令范围内)
▷ compile :作用于编译环境、测试环境、运行环境。
▷ test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值。
▷ provided :作用于编译环境、测试环境。我们后面会学习 `servlet-api` ,在使用它时,必须将 `scope` 设置为该值,不然运行时就会报错。
▷ runtime : 作用于测试环境、运行环境。jdbc驱动一般将 `scope` 设置为该值,当然不设置也没有任何问题 。▷ 注意:
如果引入坐标不指定 `scope` 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。▶ 依赖范围传递性
带有依赖范围的资源进行传递,作用范围受到影响。
五、生命周期
1、Maven 生命周期
Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件。Maven 对项目构建的生命周期划分为3套:
▷ clean :清理工作。
▷ default :核心工作,例如编译,测试,打包,安装等。
▷ site : 产生报告,发布站点等。这套声明周期一般不会使用。同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下:
当我们执行 `install`(安装)命令时,它会先执行 `compile`命令,再执行 `test ` 命令,再执行 `package` 命令,最后执行 `install` 命令。
当我们执行 `package` (打包)命令时,它会先执行 `compile` 命令,再执行 `test` 命令,最后执行 `package` 命令。
默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的:
▶ clean 生命周期
● pre-clean :执行一些需要在clean 之前完成的工作
● clean :移除所有上一次构建生成的文件
● post : 执行一些需要在clean 之后立刻完成的工作
▶ site 构建生命周期
● pre-site : 执行一些需要在生成站点文档之前完成的工作
● site :生成项目的站点文档
● post-site :执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
● site-deploy :将生成的站点文档部署到特定的服务器上
▶ default 构建生命周期
2、插件
▶ 插件
● 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
● 默认maven在各个生命周期上绑定有预设的功能
● 通过插件可以自定义其他功能
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <goals> <goal>jar</goal> </goals> <phase>generate-test-resources</phase> </execution> </executions> </plugin> </plugins> </build>
以上是关于详解Maven下载安装及IDEA配置Maven (2023最新)的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA Maven的详细安装教程(Windows版)(一站式:简介+下载+安装+环境搭建+IDEA上配置Maven)
mybatis 代码生成器(IDEA, Maven)及配置详解(部分配置你应该不知道)