Maven知识点
1.为什么我们要学maven?
maven还未出世的时候,我们有很多痛苦的经历。
痛点1:jar包难以寻找
痛点2:jar包依赖问题
痛点3:jar不方便管理
痛点4:项目编译
2.Maven简介
Maven是Apache软件基金会的一个开源项目,它用来帮助开发者管理项目中的jar,以及jar之间的依赖关系、完成项目的编译、测试、打包和发布等工作。
Maven中的概念
POM(Project Object Model 项目对象模型)
Maven管理的项目的根目录下都有一个pom.xml文件。pom.xml文件指示Maven如何工作。
在pom.xml文件中配置项目基本信息以及项目构建信息等。比比如:项目坐标、项目依赖的jar插件、编译选项等。
一旦在pom.xml文件中配置了所依赖的jar,Maven会自动从构件仓库中下载相应的构件。
项目坐标
maven给每个jar定义了唯一的标志,这个在maven中叫做项目的坐标(jar包在仓库中的地址称为坐标),通过这个坐标可以找到你需要用到的任何版本的jar包。
groupId(组id)、artifactId(构建名)、packaging(一般默认为jar)、version(版本)的组合被称为项目的坐标,它们形成了项目的唯一标识,Maven通过坐标来精准定位构件。其中groupId、artifactId、version是必须的,且这三项的值必须唯一,packaging是可选的(默认为jar)。
仓库
中央仓库全球共享,先从将jar从中央仓库下载到本地仓库,然后在项目中引用本地仓库的jar。
补充:
**Maven Repositor(找jar包坐标的网站):**https://mvnrepository.com/
3.Maven开发环境搭建:
前提
安装jdk
Maven工作是需要通过网络下载各种插件以完成任务,因此应保证网络的通畅。
3.1下载maven服务器
maven 官网:http:// maven.apache. org
点击download进行下载如下图
3.2安装,配置maven
点击下载二进制的Apache-maven-版本号-bin.zip进行解压,然后在系统环境中配置环境变量,在path中配置到bin目录,配置成功后输入命令mvn -version
查看版本如下图:
表示maven环境配置成功。
配置本地仓库地址
接下来根据情况在本地磁盘中建立通过maven下载后jar文件所存储的文件夹,一般我们称为“仓库(repository)”;最终是如何将下载的jar文件存储到我们指定的仓库中呢?需要在maven的服务器解压的文件中找到conf文件夹下的settings.xml问价进行修改,如下图所示:
配置阿里云maven镜像仓库,下载速度更快(也在上述所说的setting.xml下配置)
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3.3idea中设置maven
3.4创建maven工程
4.pom.xml配置
在pom.xml文件配置jar包信息,使用maven自动下载jar包
管理jar之间的依赖
如:配置servlet开发环境
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<!-- <type>jar</type> 包类型 默认是jar -->
<scope>provided</scope>
<!--provided不会被打包到项目中
compile会被打包到项目中(默认)
-->
</dependency>
各个子元素功能解释:
,和:依赖项的基本坐标
:依赖项的 packaging 类型,默认是 jar;
:依赖项的作用范围,默认是 compile。各个取值及含义如下:
compile:编译时和运行时依赖。如果你的项目最终打包为 war 包,则该依赖包会被拷贝到 war 包中的 lib 目录中。
provided:编译项目主代码和测试代码时使用此依赖项,运行时由 jre 或 web容器提供。如果你的项目最终打包为 war 包,则该 jar 包不会被打包。
5.maven命令
maven常用命令
- compile 编译
- clean 删除target
- test test case junit/testNG
- package 打包
- install 把项目 install (安装)到本地仓库