Maven
1.概述
Maven隶属于Apache开发的一个项目管理工具,有三个作用:
- 依赖管理:帮助导入jar包并快捷管理,省去自己手动导入的工作
- 项目构建:提供标准、跨平台的自动化项目构建方式(编译、运行、测试、打包、发布等),一站式服务
- 统一项目结构:提供统一且标准的工程目录结构
- main: 实际项目资源
- java: java源文件目录
- resources:配置文件目录
- test:测试项目资源
- java:测试源文件目录
- resources:测试配置文件目录
- target:源代码编译后的文件
- pom.xml:项目配置文件
2.依赖管理
导入依赖
在maven项目中的pom.xml中,配置以下代码即可, 以下使用导入junit jar包举例
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>compile</scope>
</dependency>
相关概念:坐标(GAV)
Maven可以通过坐标快速的定位到仓库中的某个jar文件,获取并使用
- G:groupId,组织ID,当前项目或者jar包的组织名称,通常是域名反写
- A:artifactId, 名称,当前项目或者jar包的名称,通常是模块名称
- V:version, 版本号,当前项目或者jar包的版本
- scope:导入的项目或jar包的作用域
- 不写:默认情况是compile,在任何地方使用
- main:主编译环境,即main文件夹下
- test:测试环境,即test文件夹下
依赖范围 | 编译classpath | 测试classpath | 运行classpath | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | 默认值。logback |
test | - | Y | - | Junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | jdbc 驱动 |
system | Y | Y | - | 存储在本地的jar包 |
import | 引入DependencyManagement (作用:只引入pom.xml) |
compile
:作用于编译环境、测试环境、运行环境。此为默认值,也是绝大多数依赖要配置的范围。test
: 作用于测试环境。典型的就是Junit
坐标,以后使用Junit
时,都会将scope
指定为该值provided
:作用于编译环境、测试环境。运行环境无效。详见下面代码。runtime
: 作用于测试环境、运行环境。jdbc
驱动一般将scope
设置为该值,当然不设置也没有任何问题
以下三个jar包需要配置provided
- javax.servlet-api
- javax.servlet.jsp-api
- lombok
以下一个jar包可以配置test
- junit
依赖传递
依赖传递可以分为:
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
例如A.jar中依赖了B.jar,B.jar中又依赖了C.jar,nameA和B,B和C就是直接依赖,A和C是间接依赖,此时如果不想A和C产生依赖关系,需要排除依赖
在A中配置如下:
<dependency>
<groupId>com.abc</groupId>
<artifactId>A</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除依赖, 主动断开依赖的资源-->
<exclusions>
<exclusion>
<groupId>C</groupId>
<artifactId>C</artifactId>
</exclusion>
</exclusions>
</dependency>
3.仓库
仓库就是存放jar包的地方,一般有3类仓库
- 本地仓库:本地下载好的jar包存放的目录
- 中央仓库:由Maven项目团队维护的开源的jar包仓库地址,https://repo1.maven.org/maven2/
- 远程仓库(私服):中央仓库国内访问较慢,一般由公司建立,便于国内使用,比如阿里云对中央仓库的镜像
配置本地仓库
在安装maven的路径中找到conf->settings.xml,找到如下标签,标签内容是自己本地仓库的路径
<localRepository>D:\develop\software\apache-maven-3.6.1\Maven_Repository</localRepository>
配置中央仓库
以阿里云为例,在
<mirror>
<!-- 本镜像的id,与这里配置的其他镜像id不一样即可 -->
<id>alimaven</id>
<!-- central表示镜像的是中央仓库 -->
<mirrorOf>central</mirrorOf>
<!-- 名称,可以省略 -->
<name>aliyun maven</name>
<!-- 镜像路径,固定不变 -->
<!-- <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 已弃用-->
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
4. IDEA中集成Maven
生命周期
Maven对项目的构建过程进行抽象和统一,描述了项目的完整构建过程和经历阶段
- Clean:清理工作
- Default:核心工作,如编译,测试,打包,安装,部署等
- Site:生成报告,发布站点(基本不会使用)
主要关注以下几点:
• clean:移除上一次构建生成的文件,也就是当前模块中target的目录
• compile:编译项目源代码,并将编译后的class文件和资源文件复制到当前模块中target目录
• test:使用合适的单元测试框架运行测试(junit)
• package:将编译后的文件打包,如:jar、war等;并存入当前模块中target目录
• install:安装项目的jar包到本地仓库
标签:maven,依赖,仓库,jar,Maven,编译 From: https://www.cnblogs.com/qifenku/p/17295250.html