Maven是一个项目管理工具,它的作用就是管理项目,主要体现在两个方面:依赖管理
和一键构建
。
jar包在maven本地仓库中是按照什么结构存放的?
项目应该怎么获取对应的 jar 包 ?
本地仓库没有 jar 包从哪里下载 ?
maven下载地址
将压缩包解压到一个没有中文,没有空格的目录
① 配置本地仓库的目录位置
② 配置阿里云镜像
默认情况下,当本地没有需要的依赖的时候,maven会从apache的中央仓库下载,速度非常慢,在这里配置成阿里云的仓库地址
<mirrors>
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
mirrors>
启动cmd, 在电脑的任意位置使用mvn -version
进行测试
pom.xml------------------------------------------------------------这是maven要使用的当前项目的配置文件
target ------------------------------------------------------------这是存储项目构建过程中产生的文件的(这个文件如果不存在会自动创建)
src ------------------------------------------------------------这是项目的资源文件
|--main -------------------------------------------------------- 这是当前项目的正式文件
|-- java-----------------------------------------------存放的是正式的java文件
|-- resources------------------------------------------存放的是正式的配置文件
|--test -------------------------------------------------------- 这是当前项目的测试文件
|-- java-----------------------------------------------存放的是测试的java文件
|-- resources------------------------------------------存放的是测试的配置文件(这个目录一般是没有的)
maven的项目构建过程是基于命令的,下面来看一些常见的命令
清理命令,执行clean会删除target目录, 即清理掉上一次项目构建产生的文件
编译命令,作用是将 src/main/java
下的文件 ( 正式的java文件 )编译为class文件输出到 target
目录下
测试命令,作用是执行 src/test/java
下的测试类,并编译为 class 文件输出到 target 目录下
打包命令,打的是所有的正式代码 (src/main
) 对于 java 工程执行 package 打成 jar
包,对于 web 工程打成 war
包
安装命令,将打好 jar 包或者 war 包安装到本地maven仓库
部署命令,将打好的jar包或war包部署到私服中
本章节介绍如何在idea中配置使用maven软件
在主界面配置之后,其他项目再也不用配置了
编写项目标识
很多情况下,我们需要精确控制一个依赖在哪个过程中生效,为了实现这个功能,Maven为每个依赖提供了作用范围,即:依赖范围。
maven支持的依赖范围主要有下面几种:
compile: 默认依赖范围,作用域在编译、测试、运行时都有效。
test: 作用域在测试时有效,编译和运行时不需要。
provided:作用域在编译、测试时有,运行时不需要。
runtime: 作用域在测试、运行时有效,编译时不需要。
maven的主要标签
groupId 公司(com.itheima)
artifactId 项目
version 版本号
SNAPSHOT 快照 测试
RELEASE 发行
packaging
jar 普通java工程
war web工程
pom 父工程
拆分 :将原来的一个项目拆分成一个个小的模块, 每个模块都有自己的坐标, 当其它项目需要本模块的功能时, 只需要按照坐标引入本模块就可以了
聚合: 通过坐标的形式,将各个模块组装在一起,完成一个项目的功能
创建父工程
创建dao模块
创建service模块
创建web模块
建立依赖关系
在上面的工程中, 存在两套关系
web---->service----->dao
web---->service service----->dao 直接依赖
web---->dao 间接依赖
在依赖的传递过程中,很容易出现同一jar包的版本冲突问题,这个就称为依赖冲突
在pom文件定义依赖,先声明的依赖为准。
从依赖程序开始算起,到被依赖的程序,以路径短的为准。
依赖排除就是在依赖引入的过程中,通过exclusions
标签排掉指定的跟随依赖
面对众多的依赖,有一种方法不用考虑依赖路径、声明优先等因素,可以采用直接锁定版本的方法确定依赖构件的版本
版本锁定后,系统会以锁定的版本的为准添加到工程中,此方法在企业开发中常用。