一、Maven介绍
1、什么是Maven
Maven 是专门用于构建和管理Java相关项目的工具。
Maven是意第绪语,依地语(犹太人使用的国际语),表示专家的意思。
2、Maven主要用处一:相同的项目结构
使用Maven管理的Java 项目都有着相同的项目结构
1. 有一个pom.xml 用于维护当前项目都用了哪些jar包
2. 所有的java代码都放在 src/main/java 下面
3. 所有的测试代码都放在src/test/java 下面
3、Maven主要用处二:统一维护jar包
比如说有多个Java 项目,这些项目都不是maven风格。那么这3个项目,就会各自维护一套jar包。 而其中有些jar包是相同的。
而maven风格的项目,首先把所有的jar包都放在"仓库“ 里,然后哪个项目需要用到这个jar包,只需要给出jar包的名称和版本号就行了。 这样jar包就实现了共享
如图所示,在pom.xml里,表示用到了mysql 的jar包,版本号是5.1.30。
4、使用Maven从哪些方面管理项目如
1.依赖管理:Maven给每个项目提供了一个pom.xml文件,我们可以在其中配置我们需要的第三方资源,当pom.xml文件发生变化的时候Maven会重新加载该配置文件,根据配置信息查找对应的第三方资源并导入到项目中使用。
2.项目构建:Maven提供了统一的项目构建方式,从编译到部署,并且操作简单。
3.插件:Maven提供了丰富的插件,比如项目打包插件,测试插件等等。
二、Maven加载原理
1、Maven和Ant对比
相同点:都是项目构建管理工具。
不同点有:
1. Maven约定了目录结构,而Ant没有。
2. Maven是申明式的,用pom.xml文件;而Ant是程序式的,构建过程需要自定义,用builder.xml.
3. Maven是有生命周期的,而Ant没有。
4. Maven内置依赖管理和Repository来实现依赖的管理和统一存储;而Ant没有。Maven第一次install的时候会把依赖的jar包和构件从远处库(又叫中央库,http://repol.maven.org/maven2,统一存储maven可以解释的文件资源)下载到本地库(先从本地仓库找)。Maven还可以管理传递依赖。
5.Maven配置比较简单,有很多的约定、规范、标准,可以用较少的代码干更多的事;而Ant配置比较麻烦,需要配置整个构建的过程(但Ant配置灵活)。
三、Maven安装和配置
1、下载
首先我们从maven官网下载Maven,官网地址:Maven – Welcome to Apache Maven
Maven的最新版本为3.8.4。我们所使用的IDEA 2019.2.4中默认集成的是3.6.1版本,这两个版本对我们使用来说,没有什么区别。从官网上下载Maven时,因为是国外网站,下载速度较慢。
2、安装
从官网下载的是zip格式,解压缩后就可以直接使用,但是建议安装目录中不要包含中文(作为一个程序员,不管什么情况下路径都不要出现中文,这是软件安装过程中能够减少出错非常重要的好机关)。
解压好后进入到maven解压目录中,其中包含的内容也不多,就四个文件夹和三个声明文件
3、配置
编辑安装目录下的conf子目录中的settings.xml文件,完成如下配置
3.1 配置本地仓库
1. 一定要在<settings>
标签里面配置<localRepository>
。
最简单办法:找到<settings>
标签,下面有一段注释,注释中有<localRepository>
标签,把<localRepositoy>
标签放在注释外面(保证在settings标签里面)。
2. 注意本地仓库文件夹路径的斜杠方向。直接从Windows系统中复制过来的路径中斜杠是右斜杠,而Maven配置本地目录时斜杠为左斜杠。
3.2 配置镜像仓库
中央仓库的访问速度比较慢,所以我们一般使用国内的镜像仓库。常用的两个镜像仓库是阿里云或华为云。在settings.xml中找到<mirrors>
标签,在里面配置上<mirror>
表示镜像代理,复制的时候别把<mirrors>
标签复制上了。
3.2.1 阿里云
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
3.2.1 华为云
<mirrors>
<mirror>
<id>huaweicloud</id>
<mirrorOf>*</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
</mirrors>
3.3 配置JDK
在settings.xml中找到<profiles>
标签,在里面配置上<profile>
,复制的时候别把<profiles>
标签复制上了。
3.3.1 配置JDK11
<!--全局需要的一些资源,如:jdk版本。Maven项目使用的默认jdk版本-->
<profiles>
<!--一个profile,代表一个资源的配置。配置的资源不会即时生效-->
<profile>
<!--唯一标记,随便写,唯一即可-->
<id>jdk-11</id>
<!--默认生效范围-->
<activation>
<!--默认生效-->
<activeByDefault>true</activeByDefault>
<jdk>11</jdk><!--具体9版本-->
</activation>
<properties><!--详细参数设置-->
<!--源代码版本 - 11-->
<maven.compiler.source>11</maven.compiler.source>
<!--编译后,字节码版本 - 11-->
<maven.compiler.target>11</maven.compiler.target>
<!--编译器版本,11-->
<maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
3.3.2 配置JDK8
<profiles>
<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>
4.配置Maven环境变量
Maven环境变量配置和JDK的环境变量配置类似。需要先找到环境变量配置窗口,步骤如下:
我的电脑 -> 鼠标右键点击 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量
5.检查Maven环境变量是否配置成功
在命令行工具中输入:mvn -version查看。只要没有提示没有这个命令,说明环境变量配置成功了。下图为正确执行命令后的显示效果如下:
四、IDEA集成Maven
1. 默认配置
IDEA 菜单 File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven
IDEA中默认已经集成了Maven(安装IDEA时,IDEA软件里面已经包含了Maven软件,不需要单独下载Maven),可以不用做任何修改。如果想要修改,可以按照图示(1)(2)(3)箭头所指进行修改即可。
五、IDEA新建Maven项目
1.新建项目
IDEA 菜单 File -> New -> Project
2、选择项目类型
1.第一次创建Maven项目时(2)所示位置,Project SDK 可能是没有的,需要点击New...按钮选择JDK。如果此处JDK版本就是我们需要的就不需要点击New...按钮修改了。
2.只有第一次需要修改,以后(2)所示位置不需要修改。
3.Project SDK部分没有问题就可以点击(3)所示位置的Next按钮。
3、填写项目信息
每个Maven项目都有自己的坐标。(idea2019是这样的,idea2021年会直接跳过这一步)
GroupId:公司网址倒写。
ArtifactId:项目名。项目名随意起,不建议写成中文。示例中叫做ideamaven。
Version:默认就有。目前对我们来说不需要修改。其中1.0 表示版本号,SNAPSHOT表示快照(当Version中带有SNAPSHOT发布到中央仓库或私服时会上传到快照库。而Version中不带有SNAPSHOT的项目会发布到public库。由于我们也不使用私服,所以带不带SNAPSHOT没有影响)
4、确定项目存放位置
Project name:项目名。即存放在本机中项目文件夹的名称。Project name值可以不同于ArtifactId的值。
Project location:项目位置。即项目存放在本机的路径。
六、Maven项目结构详解