maven必知必会
了解maven
maven的作用
- maven采取约定大于配置的原则,规范了一套标准的javaweb项目结构
- maven提供了完备的包管理功能,不用到处找jar包了
- maven提供了一套完整的项目构建声明周期,让开发人员一键式一站式测试打包发布等.
maven仓库
maven仓库分为
-
本地(local)
-
中央(central)
-
远程(remote) :定制的仓库,存放一些没在中央仓库中的包,比如公司自己的框架包
本地配置
本地maven的配置非常灵活,可以创建多个用于不同开发环境的配置文件.配置文件中指定不同的本地仓库地址和中央仓库地址 maven仓库配置
添加远程仓库
<project ...>
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
</project>
依赖搜索顺序
- 搜索本地仓库
- 搜索中央仓库
- 搜索远程仓库
- 三种仓库中都没有所需包,抛出错误
定制包到本地仓库
一些中央仓库和远程仓库没有的包,想使用的话要手动导入本地仓库,比如想使用kaptcha包(用于生成验证码图片的工具)
-
下载 “kaptcha-2.3”,得到jar包
-
执行maven命令,加入本地仓库
mvn install:install-file -Dfile=/Users/hans/Downloads/kaptcha-2.3.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion=2.3 -Dpackaging=jar
-
加入成功,声明坐标
<dependency>
<groupId>com.google.code</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3</version>
</dependency>
pom文件
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 模型版本 不重要 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId>
<!-- 版本号 -->
<version>1.0</version>
<!-- 打包方式 jar/war/pom-->
<packaging>war</packaging>
</project>
依赖管理原则
- 如果两个依赖版本在依赖树里的深度是一样的时候,第一个被声明的依赖将会被使用。
- 依赖具有传递性
- 子类声明的依赖版本覆盖父类声明的依赖版本