【maven】ITOO POM文件依赖关系

来源:互联网 发布:北京节能环保中心 知乎 编辑:程序博客网 时间:2024/06/01 08:26

最近更改最多的就是pom文件的依赖关系管理和添加,更新了很多次,一次次的交流中,发现原来对于maven的管理机制还是不懂。


一、maven的scope标签


scope标签的主要参数如下。

(1)compile  编译依赖范围

默认的scope,表示dependency,都可以在生命周期中使用。而且,这些依赖会传递到依赖的项目中。对于编译、测试、运行三种classpath都有效,并且会随着项目一起发布。

(2)test  测试依赖范围

使用了此依赖范围的Maven依赖,只对于测试的classpath有效,在编译主代码或者运行项目的时候,无法使用此依赖。典型的是junit,它只要在便一眼测试和运行测试的时候, 才会有效。

(3)Provide:已提供依赖范围

如果使用此标签,对于编译和测试时候classpath有效,但是在运行时无效。典型例子servlet-api,编译和测试项目的时候,需要该依赖,但是项目运行的视乎, 由于容器已经提供,所以不需要Maven重新引入。

(4)Runtime:运行时依赖范围。使用之后,对于测试和运行classPath有效,但是在编译主代码时候无效。

(5)System:系统依赖范围,和Provided依赖范围完全一致。使用System范围依赖时,必须通过systemPath元素显式的指定依赖文件的路径。但是,使用System范围的依赖时候必须通过systemPath显式指定依赖文件的路径。因为这个范围的依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,所以容易造成移植的不稳定性因此谨慎使用。


依赖范围(scope)
对于编译ClassPath有效
对于测试classPath有效
对于运行时classpath有效
例子
compile
y
y
y
spring-core
test
_
y
-
junit
provided
y
y
-
servlet-api
runtime
-
y
y
JDBC驱动实现
system
y
y
-
本地的,Maven仓库之外的类库文件


二、Provide标签在项目中的使用。


引入其他服务的api时,在scope中添加provide,避免传递依赖。

<!--依赖基础信息的API--><dependency><groupId>com.dmsdbj.itoo</groupId><artifactId>basicInfo-api</artifactId><version>1.0.0-SNAPSHOT</version><scope>provided</scope></dependency><!--依赖权限的API--><dependency><groupId>com.dmsdbj.itoo</groupId><artifactId>authorityManagement-api</artifactId><version>1.0.0-SNAPSHOT</version><scope>provided</scope></dependency><!--添加单表服务的api--><dependency><groupId>com.dmsdbj.itoo</groupId><artifactId>singleTableMaintain-api</artifactId><version>1.0.0-SNAPSHOT</version><scope>provided</scope>