Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。
本章我们详细介绍如何使用Maven。
一、Maven是什么?
如果每一个项目都自己搞一套配置,肯定会一团糟。我们需要的是一个标准化的Java项目管理和构建工具。
Maven就是是专门为Java项目打造的管理和构建工具,它的主要功能有:
- 提供了一套标准化的项目结构;
- 提供了一套标准化的构建流程(编译,测试,打包,发布……);
- 提供了一套依赖管理机制。
Maven项目结构
一个使用Maven管理的普通的Java项目,它的目录结构默认如下:
a-maven-project
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── target
项目的根目录a-maven-project
是项目名,它有一个项目描述文件pom.xml
,存放Java源码的目录是src/main/java
,存放资源文件的目录是src/main/resources
,存放测试源码的目录是src/test/java
,存放测试资源的目录是src/test/resources
,最后,所有编译、打包生成的文件都放在target
目录里。
这些就是一个Maven项目的标准目录结构。
所有的目录结构都是约定好的标准结构,我们千万不要随意修改目录结构。使用标准结构不需要做任何配置,Maven就可以正常使用。
我们再来看最关键的一个项目描述文件pom.xml
,它的内容长得像下面:
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.itranswarp.learnjava</groupId>
<artifactId>hello</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
...
</properties>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
其中,groupId
类似于Java的包名,通常是公司或组织名称,artifactId
类似于Java的类名,通常是项目名称,再加上version
,一个Maven工程就是由groupId
,artifactId
和version
作为唯一标识。我们在引用其他第三方库的时候,也是通过这3个变量确定。例如,依赖commons-logging
:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
使用<dependency>
声明一个依赖后,Maven就会自动下载这个依赖包并把它放到classpath中。
二、Maven和JDK版本支持情况
JDK版本 | Maven版本支持情况 |
---|---|
JDK 1.8 | Maven 3.3及以上 |
JDK 9 | Maven 3.5.0及以上 |
JDK 10 | Maven 3.5.3及以上 |
JDK 11 | Maven 3.5.4及以上 |
JDK 12 | Maven 3.6.0及以上 |
JDK 13 | Maven 3.6.1及以上 |
JDK 14 | Maven 3.6.2及以上 |
JDK 15 | Maven 3.6.3及以上 |
JDK 16 | Maven 3.8.1及以上 |
JDK 17 | Maven 3.8.3及以上 |
之前我们使用的maven版本是3.6.3。详细可以参考下面文章进行了解学习:
修改IDEA自带的Bundled (Maven 3)的仓库路径(Maven安装及配置)_idea插件仓库地址-CSDN博客
!!! 为了后续学习JDK17方便,这次我们安装较新版本的Maven作为学习~
三、安装Maven
Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。
如果你还未安装 JDK,可以参考我们的Java基础-环境篇:JDK安装与环境变量配置jdk8/11/17(保姆式详解)_Siobhan. 明鑫的博客-CSDN博客
若JDK配置完毕,接着按照如下步骤进行~~~
1、检查 Java 安装
操作系统 | 任务 | 命令 |
---|---|---|
Windows | 打开命令控制台 | c:\> java -version |
Linux | 打开命令终端 | # java -version |
Mac | 打开终端 | $ java -version |
2、Maven 下载
Maven 下载地址:Maven – Download Apache Maven
不同平台下载对应的包:
系统 | 包名 |
---|---|
Windows | apache-maven-3.9.5-bin.zip |
Linux | apache-maven-3.9.5-bin.tar.gz |
Mac | apache-maven-3.9.5-bin.tar.gz |
maven历史版本:Index of /maven/maven-3
这里我们直接安装3.9.5的Windows系统版本!
3、解压到对应目录
Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下,这里我解压到D:\Software\Java\Maven 下面。
系统 | 存储位置 (可根据自己情况配置) |
---|---|
Windows | D:\Software\Java\Maven\apache-maven-3.3.9 |
Linux | /usr/local/apache-maven-3.3.9 |
Mac | /usr/local/apache-maven-3.3.9 |
解压后目录结构如下:
- bin:存放了 maven 的命令
- boot:存放了一些 maven 本身的引导程序,如类加载器等
- conf:存放了 maven 的一些配置文件,如 setting.xml 文件
- lib:存放了 maven 本身运行所需的一些 jar 包
四、设置 Maven 环境变量
1、点击高级系统设置,再点击环境变量
2、添加环境变量 MAVEN_HOME:
3、编辑变量Path,添加变量值%MAVEN_HOME%\bin
%MAVEN_HOME%\bin
参考:Maven 环境配置 | 菜鸟教程
系统 配置 Windows 右键 "计算机",选择 "属性",之后点击 "高级系统设置",点击"环境变量",来设置环境变量,有以下系统变量需要配置:
新建系统变量 MAVEN_HOME,变量值:E:\Maven\apache-maven-3.3.9
编辑系统变量 Path,添加变量值:;%MAVEN_HOME%\bin
注意:注意多个值之间需要有分号隔开,然后点击确定。
Linux 下载解压:
# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz # tar -xvf apache-maven-3.3.9-bin.tar.gz # sudo mv -f apache-maven-3.3.9 /usr/local/编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:
export MAVEN_HOME=/usr/local/apache-maven-3.3.9 export PATH=${PATH}:${MAVEN_HOME}/bin保存文件,并运行如下命令使环境变量生效:
# source /etc/profile
在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:
# mvn -vMac 下载解压:
$ curl -O http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz $ tar -xvf apache-maven-3.3.9-bin.tar.gz $ sudo mv -f apache-maven-3.3.9 /usr/local/编辑 /etc/profile 文件 sudo vim /etc/profile,在文件末尾添加如下代码:
export MAVEN_HOME=/usr/local/apache-maven-3.3.9 export PATH=${PATH}:${MAVEN_HOME}/bin保存文件,并运行如下命令使环境变量生效:
$ source /etc/profile在控制台输入如下命令,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功:
$ mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven home: /usr/local/apache-maven-3.3.9 Java version: 1.8.0_31, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre Default locale: zh_CN, platform encoding: ISO8859-1 OS name: "mac os x", version: "10.13.4", arch: "x86_64", family: "mac"
五、测试Maven是否安装成功
win+R 运行cmd 输入 mvn -version或者mvn -v,如图所示则配置成功
六、配置maven仓库
- Maven中的仓库是用来存放maven构建的项目和各种依赖的(Jar包)。
1. Maven的仓库分类
- 本地仓库: 位于自己计算机中的仓库, 用来存储从远程仓库或中央仓库下载的插件和 jar 包,
- 远程仓库: 需要联网才可以使用的仓库,阿里提供了一个免费的maven 远程仓库。
- 中央仓库: 在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件
2、配置本地仓库
1 初始化本地仓库
打开Windows终端输入:
mvn // 初始化maven
Maven初始化后,会在C盘User文件夹-本地账号文件夹中自动创建.m2文件夹,包含一个空的名为Repository的文件夹。
使用IDEA时,如果不指定自己下载的Maven,idea会默认使用自带的Maven 3(bundle)。
maven 3默认的仓库路径一般是在c盘的用户文件夹中的.m2目录下:
当maven下的pom文件中的依赖逐渐增加时,maven仓库下面的jar包也会渐渐增多。
在这里,我们不推荐将本地仓库存放在C盘,所以我们需要将Repository文件夹删除,保留.m2即可。为了后续方便要给仓库换位置到D盘。
2 新建文件夹作Maven的本地仓库
在C盘之外的一个盘符中创建一个文件夹用来当作Maven的本地仓库
创建在D盘,即在D:\Software\Java\Maven文件下新创建一个文件夹为: Maven-Repository
3 进入Maven安装目录 配置本地仓库
在config文件夹中找到一个settings.xml 配置文件,用Notepad++打开,进行本地仓库的配置
在localRepository的注释标签下面添加
<localRepository>D:\Software\Java\Maven\Maven-Repository</localRepository>
编辑完 ctrl + s 保存一下,先不用急着关闭该文件。
3、配置中央仓库
Maven作为项目构建及管理工具是如何管理jar包的。
首先每当我们开发一个项目的时候,需要导入一些项目需要的依赖,也就是相关的jar包,只有导入这些依赖,项目才能正常,高效地运行起来。
当我们需要某一个jar包的时候,我们需要在项目的pom.xml文件中去配置所需要的依赖以进行导入到项目中,则此时,Maven会先去本地仓库中查找是否存在相应的jar包,如果有,配置就能直接用,如果Maven在本地仓库中没有找到,则Maven会去中央仓库中下载相应的jar包存放到本地仓库在进行导入到项目中。
配置中央仓库只需要将下面的一段代码直接复制粘贴到settings.xml文件的<mirrors></mirrors>中即可。
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>
http://maven.aliyun.com/nexus/content/groups/public/
</url>
<mirrorOf>central</mirrorOf>
</mirror>
以上为刚下载maven的相关配置。
如果已使用一段时间,需要更改Maven仓库位置,参考文章:
修改IDEA自带的Bundled (Maven 3)的仓库路径(Maven安装及配置)_idea插件仓库地址-CSDN博客
七、IDEA中配置Maven
1 打开IDEA 创建一个新的project
2 打开IDEA 选择File --> Settings --> 搜素maven,查看默认配置
3 修改默认配置配置
4 配置Maven的Runner参数
参数一: -DarchetypeCatalog=internal 解决使用骨架构建Maven项目时候会卡住的问题
参数二: -Dfile.encoding=GB2312 解决Maven工程中控制台输出中文乱码的问题
注意事项:
上述配置如果是在settings中进行配置则只会对当前Project生效,后续创建的新的Project不会生效
如果是在New Projects Setup里面的setting for new projects中配置,则会对后续创建的所有新的Project都生效,但是无法对当前项目生效
八、创建Maven工程
在IDEA中配置好maven后, 接下来我们使用maven去快速的去构建一个 JavaWeb项目
1 project创建好以后, 选择创建module
2 创建一个 maven 工程
点击 Next填写项目信息
进行一下修改
创建好的工程,长这个样子
Maven目录说明:
src/main/java —— 存放项目的.java 文件
src/main/resources —— 存放项目资源文件,如数据库的配置文件
src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
target —— 项目输出位置,编译后的class 文件会输出到此目录
pom.xml ——maven 项目核心配置文件
1
2
3
4
5
3. Maven工程改造
当前创建的maven项目是一个 普通的Java项目,不是web项目,我们要进行一下改造
在main目录下创建一个webapp文件夹
————————————————
版权声明:本文为CSDN博主「格子衫111」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012660464/article/details/114093066