您的位置:首页 > 其它

【maven】ITOO POM文件依赖关系

2017-07-24 17:04 330 查看
最近更改最多的就是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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: