pom的含义
Project Object Model:项目对象模型。将 Java 工程的相关信息封装为对象作为便于操作和管理的模型。Maven 工程的核心配置。可以说学习 Maven 就是学习 pom.xml 文件中的配置。
Maven的坐标
groupid:公司或组织的域名倒序+当前项目名称
artifactId:当前项目的模块名称
version:当前模块的版本
scope:依赖的范围
groupid+artifactId+version连起来是一个路径
以连起来的字符串作为目录结构到仓库中查找
com/gzl/maven/Hello/0.0.1-SNAPSHOT/Hello-0.0.1-SNAPSHOT.jar
<dependency>
<groupId>com.gzl.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
坐标的作用
当 A jar 包用到了 B jar 包中的某些类时,A 就对 B 产生了依赖,这个时候我们就只需要使用 dependency 标签指定被依赖 jar 包的坐标就可以了。他的大概原理就是,当我们添加依赖之后,他会去网上下载对应的jar包,下载到我们的本地仓库,下载下来的时候,依据的jav找到我们本地的jar包,进行引用。引用的话就跟java当中我声明一个变量可以多处同时引用道理是一样的。
依赖的范围
<scope>compile</scope>
依赖的范 围有几个可选值,我们用得到的是:compile、test、provided 三个。
compile:参与主程序、参与测试程序、参与打包
test:只运用于测试程序、不参与打包
比如junit我们只有在测试当中会用到,这个时候可以设置test
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
provided :参与主程序、参与测试程序、不参与打包
有些jar包我们容器就给我提供了,这个时候我们就需要设置provided
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
依赖的传递性
A 依赖 B,B 依赖 C,A 能否使用 C 呢?那要看 B 依赖 C 的范围是不是 compile,如果是则可用,否则不可用。