前言
不同的人拥有着不同的习惯,意味着每个人都会根据自己的习惯使用不同的代码编写工具(IDE),但是在工作中总是避免不了与其他人配合工作,但是不同的IDE拥有着不同的项目结构,它们彼此互不兼容。于是Apacha公司很贴心了开发了Maven的项目管理工具(Apacha真是我义父)。也是本文介绍的主要内容。
正文
Maven简介
Maven是专门用于管理和构建Java项目的工具,它的主要功能有:
- 提供了一套标准化的项目结构
- 提供了一套标准化的构建流程(编译,测试,打包,发布……)
- 提供了一套依赖管理机制
Maven将代码的一整套开发流程进行了标准化,包括但不限于:编译、测试、打包、发布,这些在之前十分繁琐的操作Maven都会帮我们完成,而我们需要做的事情就是点一点鼠标而已。
Maven还提供了一套项目依赖管理工具,它不需要你自己去下载依赖Jar包,然后再导入。
Apache就告诉两个字:
而Maven使用标准的 坐标
配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
例如我们需要导入MySQL的驱动Jar包,只需要写一个XML标签。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
<scope>compile</scope>
</dependency>
Maven就会帮我们下载,并且导入我们的项目中。
Apache就告诉两个字:
Maven安装配置
这么好用的东西,我们肯定要拥有,但如何安装呢?
- 在Maven官网下载和自己系统兼容的Maven版本。
- 解压至没有中文和特殊符号的路径下(这个很重要)。
- 配置系统变量 MAVEN_HOME 为安装路径。
- 在
path
中配置环境变量
- 打开CMD,输入一下指令:
mvn -version
如果出现
则证明Maven已经成功安装到我们的电脑中了。
如果没出现怎么办呢?主要问题集中在系统环境变量的配置,细心点看看自己是否遗漏了哪些?
6. 修改本地仓库
修改 conf/settings.xml 中的<localRepository>
为一个指定目录作为本地仓库,用来存储jar包。
7. 因为一些魔法原因,我们访问官方中央仓库(也就是下载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>
至此我们就完成了所有的Maven配置。
Maven的常用命令
- compile :编译
- clean:清理
- test:测试
- package:打包
- install:安装
可以直接在项目路径的CMD窗口执行以上命令:
举个例子,我想把我的项目打成Jar包
就直接在项目路径下的CMD执行命令
mvn -packsge
当然IDEA也集成了Maven。
在IDEA中新建Maven项目:
在项目结构中点击Maven。
点击创建
后,
我们就能看到以下的项目结构,每个Maven项目都是这样的基础项目结构,这也就是Maven的意义所在。
main目录:是放置代码的主要空间,我们编写的代码都会放在这里
test目录:是放置测试代码的空间,有时我们需要使用@Test
注解来测试代码,就在这里进行。
pom.xml文件:是该项目的核心配置文件,我们经常会在这个文件中输入需要导入的Jar包坐标。
在插件市场上安装Maven Helper,我们就可以在IDEA的右键菜单中找到Maven命令。
真的方便哭了,o(╥﹏╥)o
Maven 坐标详解
什么是坐标?
- Maven 中的坐标是资源的唯一标识
- 使用坐标来定义项目或引入项目中需要的依赖
Maven 坐标主要组成
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:
com.itheima
) - artifactId:定义当前Maven项目名称(通常是模块名称,例如
order-service
、goods-service
) - version:定义当前项目版本号
如下图就是使用坐标表示一个项目:
注意:
- 上面所说的资源可以是插件、依赖、当前项目。
- 我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。
依赖管理
使用坐标引入jar包
使用坐标引入jar包的步骤:
- 在项目的 pom.xml 中编写
<dependencies>
标签。 - 在
标签中 使用 <dependency>
引入坐标。 - 定义坐标的
groupId
,artifactId
,version
。
点击刷新按钮,使坐标生效
注意:
- 具体的坐标我们可以到如下网站进行搜索
- Maven中央仓库
快捷方式导入jar包的坐标:
每次需要引入jar包,都去对应的网站进行搜索是比较麻烦的,接下来给大家介绍一种快捷引入坐标的方式
- 在 pom.xml 中 按 alt + insert,选择 Dependency(依赖项模板)
- 在弹出的面板中搜索对应坐标,然后双击选中对应坐标
- 点击刷新按钮,使坐标生效
依赖范围
通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。
如下图所示给junit
依赖通过scope
标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。
那么scope
都可以有哪些取值呢?
依赖范围 | 编译classpath | 测试classpath | 运行classpath | 例子 |
---|---|---|---|---|
compile | √ | √ | √ | logback |
test | × | √ | × | Junit |
provided | √ | √ | × | servlet-api |
runtime | × | √ | √ | JDBC驱动 |
system | √ | √ | × | 储存在本地的Jar包 |
- compile :作用于编译环境、测试环境、运行环境。
- test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
- provided :作用于编译环境、测试环境。在使用它时
servlet-api
,必须将scope
设置为该值,不然运行时就会报错 - runtime : 作用于测试环境、运行环境。jdbc驱动一般将
scope
设置为该值,当然不设置也没有任何问题。
至此,我们关于Maven基本上就了解清楚了,现在就可以用Maven来创建项目啦!
结语
Maven的项目结构看起来就很专业!
不仅好用,而且开源免费!
Apache简直是CoryLeft的业界楷模!
评论区