Maven依赖管理的概念
传统的项目工程中,需要将各种Jar包存放在项目中。导致一个项目工程所占大小增加。如果出现若干个项目工程,则会出现每个项目工程中都存有各自所需的Jar包,从而导致不必要的空间占用。因此使用Maven,由Maven开发的项目工程中,并不将Jar包存放在项目中,而是存放在Jar包仓库中供若干个项目工程使用,而项目工程只需要提供一个Jar包坐标即可。因此增加了Jar包可重用,以及减小了项目工程所占空间大小。依赖管理就是Maven工程对Jar包的管理。
项目的一键构建
如果直接通过Tomcat部署运行,则需要先将项目工程导包放进Tomcat目录下,然后才能部署运行。若使用Maven,则只需要一个命令就可以让其使用Tomcat部署运行,并且Maven中包含了Tomcat插件。
仓库的种类和彼此关系
Maven工程中不存放Jar包,而是对应的Jar包坐标。Jar包都存放在仓库中,仓库分为以下三类:
1>本地仓库:Maven会根据配置文件中的默认仓库来寻找对应的Jar包。
2>远程仓库(私服):公司内部使用的仓库,共同开发项目时直接通过局域网使用内部仓库。
3>中央仓库:在联网的情况下,如果在本地仓库或者远程仓库不能获取所需要的Jar包时就会去中央仓库寻找,该仓库中存放了几乎所有开源的Jar包。
因此这三者的关系是,启动一个Maven工程,然后根据Jar包坐标在本地仓库中寻找Jar包,如果不存在,则在远程仓库中寻找,若寻找到,则从远程仓库中将Jar包上传到本地仓库中(本地仓库也可以向远程仓库上传Jar包),若远程仓库也不能获取所需Jar包,则在联网的情况下,去中央仓库寻找所需Jar包。
Maven标准目录结构
1> src/main/java目录:存放项目核心代码部分
2> src/main/resources目录:配置文件部分
3> src/test/java目录:测试代码部分
4> src/test/resources目录: 测试配置文件部分
5> src/main/webapp目录: 页面资源,js,css,图片等
Maven常用命令
1>mvn clean:将编译好的项目信息删除
2>mvn compile:将项目编译并将src中的文件编译后的文件放在target目录下
3>mvn test:将src 和 test目录下的文件都进行编译并放在target目录下
4>mvn package:将项目打包
5>mvn install:将项目src和test下的文件编译,打包,并且将当前的项目安装到本地仓库中
Maven生命周期
默认生命周期:编译(Compile)->测试(test)->打包(package)->安装(install)->发布(deploy)
清理生命周期: clean(清除项目编译信息)
站点生命周期:
Maven概念模型图
依赖管理
项目对象模型(POM):中放置了①项目自身信息②项目运行所依赖的Jar包信息③项目运行环境信息(例如JDK、Tomcat信息)
依赖管理模型(Dependency):存放Jar包坐标,具体形式如下:
<!-- Jar标坐标基本由公司组织名称-项目名-版本号组成 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
一键构建
Maven项目工程中,一般使用默认生命周期,每一个构建项目的命令都对应了Maven底层的一个插件。
Maven作用域
为了防止Maven中的一些包和其他例如本地Tomcat中的Jar包发生冲突而导致项目运行失败,因此使用<scope>
<scope>中指的就是,在测试时使用该依赖的Jar包,而实际在项目运行过程中,使用其他的同名的Jar包