Maven入门
为什么使用Maven?
每一种IDE的项目结构可能都不一样,如Idea的项目要让Eclipse直接打开使用是做不到的,而Maven是专门用于管理和构建Java项目的工具,它提供了一个标准,当各IDE使用Maven创建项目,那么项目就可以通用。
Maven的主要功能有:
1.提供了一套标准化的项目结构,如图:
2.提供了一套简单的命令来标准化地构建流程(编译,测试,打包,发布.....)
3.提供了一套依赖管理机制,通过编辑pom.xml进行管理项目依赖的第三方资源,如jar包、插件等
配置Maven
-
在官网下载并解压Maven
-
配置环境变量:将Maven的bin目录设置为 MAVEN_HOME,在Path新增 %MAVEN_HOME%\bin ,输入
mvn -version
可查看是否配置好 -
配置本地仓库:修改 conf/settings.xml 中的
<localRepository>
为一个本机上的指定目录 -
配置阿里云私服:修改 conf/settings.xml 中的
<mirrors>
标签,为其添加如下子标签
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
依赖管理
Maven使用坐标作为第三方依赖的单位,坐标组成如下:
groupld
:定义当前Maven项目隶属组织名称(通常是域名反写,例如: com.itheima)artifactld
:定义当前Maven项目名称(通常是模块名称,例如order-service、goods-service)version
:定义当前项目版本号scope
:依赖坐标的范围
如何导入依赖?
- 在pom.xml中编写
<dependencies>
标签 - 在
<dependencies>
标签中使用<dependency>
引入坐标, 可以从https://mvnrepository.com/中获取依赖的坐标代码 - 定义坐标的groupld, artifactld, version
- 点击刷新按钮,使坐标生效
Maven仓库
在pom.xml添加了依赖坐标后,依赖库中就会出现所需要的第三方依赖,而这第三方依赖就是来自于==仓库==
仓库分为三类:
- 本地仓库:自己计算机的一个目录
- 中央仓库:由Maven团队维护的全球唯一的仓库,https://repo1.maven.org/maven2/
- 远程仓库:私服,一般是由公司团队搭建的私有仓库
当项目需要用到第三方依赖时,Maven会先从本地仓库找寻,若本地仓库没有该依赖,则从中央仓库或远程仓库下载到本地仓库继续使用。
依赖的作用范围
通过设置坐标的依赖范围(scope
:默认值为compile。),可以设置对应jar包的作用范围:编译环境、测试环境、运行环境。
compile :作用于编译环境、测试环境、运行环境。
test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错
runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题
如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。
流程构建指令
基础指令
compile
编译,将java源文件编译成class文件,在项目下会生成一个 target 目录,编译后的字节码文件就放在该目录下clean
清理,删除target文件夹test
测试,执行test目录下的测试用例package
打包,将项目打成jar包install
安装,将当前项目放到Maven的本地仓库中,供其他项目使用
使用: $ mvn compile
这里推荐一款Maven插件:MavenHelper,可以更快捷地使用Maven命令
“构建项目”的生命周期
Maven构建项目生命周期描述的是一次构建过程经历了多少个事件。
Maven对项目构建的生命周期划分为3套:
- clean:清理工作
- default:核心工作,例如编译,测试,打包,安装等
- site:产生报告,发布站点等
同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。
例如默认(default)生命周期,当我们执行 install 命令时,它会依次执行 compile、test、package、install。
默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只需要关注常用的即可:
标签:依赖,入门,项目,仓库,Maven,坐标,scope From: https://blog.51cto.com/u_15910817/6037177