零基础学习【Maven】这一篇就够了

本文详细介绍了Maven的基础概念,包括依赖管理、一键构建的过程(如clean、compile、test等命令),以及如何在Maven工程中进行环境配置、创建项目、依赖范围设定和标签含义。此外,还涉及了分模块开发、父子工程搭建、依赖冲突处理策略等内容。
摘要由CSDN通过智能技术生成

1. maven

1-1. maven介绍

Maven是一个项目管理工具,它的作用就是管理项目,主要体现在两个方面:依赖管理一键构建

  • 依赖管理:对 jar 包的管理方式,maven 会将所有需要的 jar 包放在本地仓库,每个项目通过配置文件引入自己所需要的
  • 一键构建:一个命令就可以完成一个项目构建过程

依赖管理

在这里插入图片描述

jar包在maven本地仓库中是按照什么结构存放的?

在这里插入图片描述

项目应该怎么获取对应的 jar 包 ?

在这里插入图片描述

本地仓库没有 jar 包从哪里下载 ?

在这里插入图片描述

一键构建

  • 项目构建:一个项目从源代码完成的那一刻起后面的流程(清理 编译 测试 打包 安装 部署)就称为项目的构建过程
  • 一键构建:上面的所有过程都对应着一个命令

1-2. maven安装

下载maven

maven下载地址

安装maven

将压缩包解压到一个没有中文,没有空格的目录

目录结构介绍

在这里插入图片描述

配置maven

① 配置本地仓库的目录位置

在这里插入图片描述

② 配置阿里云镜像

默认情况下,当本地没有需要的依赖的时候,maven会从apache的中央仓库下载,速度非常慢,在这里配置成阿里云的仓库地址

<mirrors>
  <!--阿里镜像-->
  <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>       
  </mirror>
</mirrors>

在这里插入图片描述

配置环境变量

在这里插入图片描述

测试

启动cmd, 在电脑的任意位置使用mvn -version进行测试

在这里插入图片描述

1-3. 标准结构

pom.xml------------------------------------------------------------这是maven要使用的当前项目的配置文件
target ------------------------------------------------------------这是存储项目构建过程中产生的文件的(这个文件如果不存在会自动创建)
src    ------------------------------------------------------------这是项目的资源文件
   |--main -------------------------------------------------------- 这是当前项目的正式文件
   		|-- java-----------------------------------------------存放的是正式的java文件
   		|-- resources------------------------------------------存放的是正式的配置文件
   |--test -------------------------------------------------------- 这是当前项目的测试文件
		|-- java-----------------------------------------------存放的是测试的java文件       
		|-- resources------------------------------------------存放的是测试的配置文件(这个目录一般是没有的)

1-4. 常见命令

maven的项目构建过程是基于命令的,下面来看一些常见的命令

clean

清理命令,执行clean会删除target目录, 即清理掉上一次项目构建产生的文件

在这里插入图片描述

compile

编译命令,作用是将 src/main/java 下的文件 ( 正式的java文件 )编译为class文件输出到 target 目录下

在这里插入图片描述

test

测试命令,作用是执行 src/test/java 下的测试类,并编译为 class 文件输出到 target 目录下

在这里插入图片描述

package

打包命令,打的是所有的正式代码 (src/main) 对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war

在这里插入图片描述

install

安装命令,将打好 jar 包或者 war 包安装到本地maven仓库

在这里插入图片描述

deploy

部署命令,将打好的jar包或war包部署到私服中

总结

  • clean:删除target目录
  • compile:将正式的java代码进行编译(不包括test),生成class文件放到target目录中
  • test:将test代码进行编译(不包括java),生成class文件放到target目录中
  • package:将正式的java代码打包成jar包或war包
  • install:将打好jar包或者war包安装到本地maven仓库
  • deploy:将打好jar包或者war包安装到私服中

2. maven工程

本章节介绍如何在idea中配置使用maven软件

2-1. 配置环境

在主界面配置之后,其他项目再也不用配置了

在这里插入图片描述

2-2. 创建工程

在这里插入图片描述

编写项目标识

在这里插入图片描述

2-3. 依赖范围

很多情况下,我们需要精确控制一个依赖在哪个过程中生效,为了实现这个功能,Maven为每个依赖提供了作用范围,即:依赖范围。
maven支持的依赖范围主要有下面几种:
	compile: 默认依赖范围,作用域在编译、测试、运行时都有效。
	test:    作用域在测试时有效,编译和运行时不需要。
	provided:作用域在编译、测试时有,运行时不需要。 
	runtime: 作用域在测试、运行时有效,编译时不需要。

在这里插入图片描述

2.4 maven的主要标签含义

maven的主要标签
	groupId     公司(com.itheima)
	artifactId  项目
	version     版本号
		SNAPSHOT  快照   测试
		RELEASE   发行
	packaging
		jar  普通java工程
		war  web工程
		pom  父工程

3. 分模块开发

3-1. 拆分与聚合的思想

拆分 :将原来的一个项目拆分成一个个小的模块, 每个模块都有自己的坐标, 当其它项目需要本模块的功能时, 只需要按照坐标引入本模块就可以了

聚合: 通过坐标的形式,将各个模块组装在一起,完成一个项目的功能

在这里插入图片描述

3-2. 父子工程搭建

创建父工程

在这里插入图片描述

创建dao模块

在这里插入图片描述

创建service模块

在这里插入图片描述

创建web模块

在这里插入图片描述

建立依赖关系

在这里插入图片描述

3-3. 两套关系梳理

在上面的工程中, 存在两套关系

  • 父子工程之间: 继承关系, 子工程可以使用父工程中的jar包
  • 模块工程之间: 默认是没有任何关系的,但是可以通过依赖建立两者之间的关系,而且这个依赖关系是可以传递的
web---->service----->dao
	web---->service     service----->dao   直接依赖
	web---->dao     间接依赖

3-4. 依赖冲突

在依赖的传递过程中,很容易出现同一jar包的版本冲突问题,这个就称为依赖冲突

在这里插入图片描述

第一声明优先原则

在pom文件定义依赖,先声明的依赖为准。

在这里插入图片描述

路径近者优先原则

从依赖程序开始算起,到被依赖的程序,以路径短的为准。

在这里插入图片描述

依赖排除

依赖排除就是在依赖引入的过程中,通过exclusions标签排掉指定的跟随依赖

在这里插入图片描述

版本锁定

面对众多的依赖,有一种方法不用考虑依赖路径、声明优先等因素,可以采用直接锁定版本的方法确定依赖构件的版本

版本锁定后,系统会以锁定的版本的为准添加到工程中,此方法在企业开发中常用。

在这里插入图片描述

  • 31
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值