pom(project object model)项目对象模型
<!-- 依赖管理 -->
<dependency>
<!-- 通过坐标管理jar包 -->
<!-- 项目所在组 -->
<groupId>junit</groupId>
<!-- 当前项目在组中的唯一标识 -->
<artifactId>junit</artifactId>
<!--
版本号,
SNAPSHOT版本,指此项目还在开发中,不稳定
LATEST版本,指最新发布,这个发布可能是发布版也可能是SNAPSHOT版具体看哪个在最后。
RELEASE版本,指仓库中最后的一个非快照版本
-->
<version>4.11</version>
<!-- 依赖的范围 -->
<scope>test</scope>
</dependency>
- maven通过gav坐标(groupID artifactID version)来确定一个jar包,在本地仓库中可以看到jar包在对应的 groupID/artifactID/version/ 文件夹下
依赖范围
- compile : 编译,测试,运行都有效,默认的选择
- test : 测试有效,例如junit
- provided : 编译,测试有效,例如 servlet ,运行时容器会提供实现
- runtime : 运行和测试有效,例如 jdbc,编译时只需相应的接口,测试和运行时才需要具体的实现
- system : 编译,测试有效。使用此范围的依赖必须通过systemPath元素显式的指定依赖文件,因而此类依赖是不通过Maven仓库解析的,一般适合于本机测试环境下,依赖本地起的服务。
通过父模块进行jar包管理
父模块的pom文件
<!-- 版本号管理 -->
<properties>
<junit.version>4.12</junit.version>
<spring.version>RELEASE</spring.version>
</properties>
<!-- 依赖声明 -->
<!-- dependencyManagement
只是声明依赖,并不实现引入,子项目需要显式的声明需要用的依赖(groupID和artifactID)
未指定其他值时version和scope都读取自父模块的值
如果子项目中指定了其它值,那么会优先使用子项目中指定的值。
-->
<dependencyManagement>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
子项目的pom文件
<!-- 依赖管理 -->
<dependencies>
<!-- 按需要添加依赖,版本被父模块控制,可以自行声明,优先级比父模块更高 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
网友评论