目录
一个基本项目的pom.xml文件,通常至少包含以下4个部分:
1、项目坐标和信息描述
- 项目坐标:
指的是项目在maven资源库的坐标,通过 groupId + artifactId + version 进行表示。
groupId:用于指定当前项目所属的组,格式一般是com.组织名.项目名,如图中的com.baidu.dcs。
artifactId:当前项目所属组的唯一的ID号,如图中的:maven-test
version:用于指定当前项目的版本编号。比如:1.0-SNAPSHOT。后面的SNAPSHOT指正在开发中的项目。
- 信息描述
modelVersion:pom文件的模型版本
2、引入依赖的JAR包
配置依赖的JAR包信息,Maven会从远程仓库自动下载这个JAR到本地仓库,下载完后,就可以在项目中使用这个JAR了
引入方法:在<dependencies></dependencies>标签中配置需要的JAR包的项目坐标信息,用<dependency></dependency>标签包含
’
依赖包信息的查找及新增依赖包遇到的问题 详见《新增依赖包配置》
2.1、剔除想要排除的JAR包
如果想要排除引入的JAR包,可以使用<exclusions> </exclusions>
比如,上述引入sprint后,会产生两个依赖包,如下图:
如果想排除sprint-jcl这个包,可以进行如下操作:
在<dependencies></dependencies>中添加如下信息后,可以看到,左边部分,sprint-jcl这个包已经被踢除了
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
</exclusion>
</exclusions>
3、构建项目
项目构建,进行打包,使用<build></build>标签进行配置
构建时,可以使用不同的插件,指定不同的功能,常用的功能由如下三种,具体的配置参考图片:
- maven-assembly-plugin
设置打包信息,下图配置后,生成的jar包的名称是${artifactId}-${version}-jar-with-dependencies.jar
本例得到的是maven-test-1.0-SNAPSHOT-jar-with-dependencies.jar - maven-compiler-plugin
设置java的版本号
-
maven-resources-plugin
设置项目的编码格式
4、资源库
Maven资源库共包含3种,分别是本地仓库、第三方仓库(私服)、中央仓库
a、本地仓库
Maven会将工程中依赖的Jar包从远程下载到本机一个目录下管理,每个电脑默认的仓库是在${user.home}/.m2/repository下
我们可以在$MAVEN_HOME/conf/setting.xml文件中修改本地仓库的地址,原始的内容如下图
修改后,如下图,将本地仓库地址修改到/Users/huangjiaxin/maven/repository
b、第三方仓库
第三方仓库,又称为内部中心仓库,也称为私服
私服:一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。
注意:连接私服,需要单独配置。如果没有配置私服,默认不使用。
c、中央仓库
Maven内置了远程公用仓库:http://mvnrepository.com
这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。
在Maven中心仓库中查询依赖的包信息,详见《新增依赖包配置》中的 Maven中心储存库查询依赖包信息
注意:当我们执行 Maven 构建命令,Maven 依赖库按以下顺序进行搜索:
- 第1步 - 搜索依赖本地仓库,如果没有找到,跳到第2步。
-
第2步 - 搜索依赖中央仓库,如果没有找到,则从远程仓库中,然后移动到步骤4,否则如果找到,那么它下载到本地存储库中,以备将来参考使用。
-
第3步 - 如果没有提到远程仓库,Maven 则会停止处理并抛出错误(找不到依赖库)。
-
第4步 - 远程仓库中的搜索依赖,如果找到它会下载到本地仓库以供将来参考使用,否则 Maven 停止处理并抛出错误(找不到依赖库)。
至此,常用的4个部分的配置都介绍完了,你懂了吗?