一、Maven介绍

1、什么是Maven

Maven 是专门用于构建和管理Java相关项目的工具。
Maven是意第绪语,依地语(犹太人使用的国际语),表示专家的意思。

2、Maven主要用处一:相同的项目结构

使用Maven管理的Java 项目都有着相同的项目结构
1. 有一个pom.xml 用于维护当前项目都用了哪些jar包
2. 所有的java代码都放在 src/main/java 下面
3. 所有的测试代码都放在src/test/java 下面

java project maven project区别 maven项目和java项目的区别_maven

3、Maven主要用处二:统一维护jar包

比如说有多个Java 项目,这些项目都不是maven风格。那么这3个项目,就会各自维护一套jar包。 而其中有些jar包是相同的。
而maven风格的项目,首先把所有的jar包都放在"仓库“ 里,然后哪个项目需要用到这个jar包,只需要给出jar包的名称和版本号就行了。 这样jar包就实现了共享
如图所示,在pom.xml里,表示用到了mysql 的jar包,版本号是5.1.30。

java project maven project区别 maven项目和java项目的区别_java_02

4、使用Maven从哪些方面管理项目如

1.依赖管理:Maven给每个项目提供了一个pom.xml文件,我们可以在其中配置我们需要的第三方资源,当pom.xml文件发生变化的时候Maven会重新加载该配置文件,根据配置信息查找对应的第三方资源并导入到项目中使用。

2.项目构建:Maven提供了统一的项目构建方式,从编译到部署,并且操作简单。

3.插件:Maven提供了丰富的插件,比如项目打包插件,测试插件等等。

二、Maven加载原理

java project maven project区别 maven项目和java项目的区别_maven_03

 

java project maven project区别 maven项目和java项目的区别_jar包_04

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时,因为是国外网站,下载速度较慢。

java project maven project区别 maven项目和java项目的区别_intellij-idea_05

 2、安装

从官网下载的是zip格式,解压缩后就可以直接使用,但是建议安装目录中不要包含中文(作为一个程序员,不管什么情况下路径都不要出现中文,这是软件安装过程中能够减少出错非常重要的好机关)。

java project maven project区别 maven项目和java项目的区别_xml_06

解压好后进入到maven解压目录中,其中包含的内容也不多,就四个文件夹和三个声明文件

 

java project maven project区别 maven项目和java项目的区别_xml_07

3、配置 

编辑安装目录下的conf子目录中的settings.xml文件,完成如下配置

3.1 配置本地仓库

1. 一定要在<settings>标签里面配置<localRepository>

最简单办法:找到<settings>标签,下面有一段注释,注释中有<localRepository>标签,把<localRepositoy>标签放在注释外面(保证在settings标签里面)。

2. 注意本地仓库文件夹路径的斜杠方向。直接从Windows系统中复制过来的路径中斜杠是右斜杠,而Maven配置本地目录时斜杠为左斜杠。

java project maven project区别 maven项目和java项目的区别_intellij-idea_08

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>标签复制上了。

java project maven project区别 maven项目和java项目的区别_java_09

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查看。只要没有提示没有这个命令,说明环境变量配置成功了。下图为正确执行命令后的显示效果如下:

java project maven project区别 maven项目和java项目的区别_maven_10

四、IDEA集成Maven

1. 默认配置

IDEA 菜单 File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven

IDEA中默认已经集成了Maven(安装IDEA时,IDEA软件里面已经包含了Maven软件,不需要单独下载Maven),可以不用做任何修改。如果想要修改,可以按照图示(1)(2)(3)箭头所指进行修改即可。

java project maven project区别 maven项目和java项目的区别_maven_11

 

java project maven project区别 maven项目和java项目的区别_xml_12

五、IDEA新建Maven项目

1.新建项目

IDEA 菜单 File -> New -> Project

java project maven project区别 maven项目和java项目的区别_xml_13

2、选择项目类型

1.第一次创建Maven项目时(2)所示位置,Project SDK 可能是没有的,需要点击New...按钮选择JDK。如果此处JDK版本就是我们需要的就不需要点击New...按钮修改了。

2.只有第一次需要修改,以后(2)所示位置不需要修改。

3.Project SDK部分没有问题就可以点击(3)所示位置的Next按钮。

java project maven project区别 maven项目和java项目的区别_jar包_14

3、填写项目信息

每个Maven项目都有自己的坐标。(idea2019是这样的,idea2021年会直接跳过这一步)

GroupId:公司网址倒写。

ArtifactId:项目名。项目名随意起,不建议写成中文。示例中叫做ideamaven。

Version:默认就有。目前对我们来说不需要修改。其中1.0 表示版本号,SNAPSHOT表示快照(当Version中带有SNAPSHOT发布到中央仓库或私服时会上传到快照库。而Version中不带有SNAPSHOT的项目会发布到public库。由于我们也不使用私服,所以带不带SNAPSHOT没有影响)

java project maven project区别 maven项目和java项目的区别_java_15

4、确定项目存放位置

Project name:项目名。即存放在本机中项目文件夹的名称。Project name值可以不同于ArtifactId的值。

Project location:项目位置。即项目存放在本机的路径。

java project maven project区别 maven项目和java项目的区别_jar包_16

六、Maven项目结构详解

java project maven project区别 maven项目和java项目的区别_intellij-idea_17