上一章,我们讲了Maven的坐标和仓库的概念,介绍了Maven是怎么通过坐标找到依赖的jar包的。同时也介绍了Maven的中央仓库、本地仓库、私服等概念及其作用。这些东西都是Maven最基本、最核心的概念,大家一定要搞明白。所谓工欲善其事必先利其器,这些基础的东西一定要掌握。其实,Maven项目中还有一个最核心的文件:pom.xml 文件。pom.xml 文件是Maven项目中的核心项目管理文件,用于项目描述、依赖管理、构建信息管理、组织信息管理等。pom.xml 文件中包含了许多标签。接下来介绍一些Maven常用的标签。
一、pom.xml 常用元素
1、坐标信息
pom.xml中最重要的就是项目的坐标信息,主要包含之前介绍的:
(1)
(2)
(3)
(4)
项目中pom.xml 文件中定义:
2、依赖列表
依赖列表包含
如上面中示例中:
(1)
(2)
(3)
compile(编译范围):默认的scope,运行期有效,需要打入包中
provided:编译期有效,运行期不需要提供,不会打入包中
runtime:编译不需要,在运行期有效,需要导入包中。(接口与实现分离)
test:测试需要,不会打入包中
system:非本地仓库引入、存在系统的某个路径下的jar。(一般不使用)
(4)
(5)
3、依赖管理
依赖管理
假如某个的模块很多,一些公共的jar包,每个模块都需要引用一遍很麻烦。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。所以如果抽象出一个父工程来管理子项目的公共的依赖。
在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。
这样, 就能统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,保证测试的和发布的是相同的程序。
4、
(1)
假如一个项目有三个模块,它们都需要用到同一个jar包:common.jar。我们分别在三个项目的pom.xml 文件中定义各自对common.jar的依赖,那么当common.jar的版本发生变化时,三个项目的pom文件都要改,项目模块越多要改的地方就越多。这时候就需要用到
(2)
假如我们的项目分成了好几个模块,那么我们构建的时候是不是有几个模块就需要构建几次了(到每个模块的目录下执行mvn命令)?当然,你逐个构建没问题,但是非要这么麻烦的一个一个的构建吗,那么简单的做法就是使用聚合,一次构建全部模块。
4.0.0 com.youzhibing.account account-aggregator 1.0.0-SNAPSHOT pom Account Aggrregator http://maven.apache.org account-register account-login
最后
以上,就把Maven项目中的pom文件的常用标签介绍完。磨刀不误砍柴工,pom.xml 文件虽然简单,但是还是必须牢牢掌握。接下来会讲Maven 中最重要,也是最麻烦的依赖关系。