【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仓库解析的,而且往往与本机系统绑定,所以容易造成移植的不稳定性因此谨慎使用。
二、Provide标签在项目中的使用。
引入其他服务的api时,在scope中添加provide,避免传递依赖。
一、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仓库之外的类库文件 |
引入其他服务的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>
相关文章推荐
- Maven POM文件、多模块以及依赖关系
- maven--pom文件搜索依赖的jar包
- Maven的Pom文件中的隐式依赖导致Jar包冲突的问题
- 使用Maven插件maven-dependency-plugin拷贝所有依赖的jar和pom文件
- maven的pom.xml关系依赖书写顺序
- Maven初学,编辑POM文件,添加依赖
- Maven资源库pom文件引入依赖jar包的
- maven中pom文件的hibernate3的依赖无法下载相应的包解决办法
- maven项目pom文件(3)-将项目依赖的jar拷贝到指定文件夹
- 快速全方位解决:maven仓库里有jar包但是pom文件中依赖不到 报错~
- MAVEN pom.xml文件添加依赖报错
- 根据已有项目下lib包里jar文件生成maven的pom.xml 里面所有依赖
- maven项目中的pom文件oracle的依赖报错
- IDEA中,Maven项目POM文件中的依赖未报错(出现红色波浪线),但Maven Projects中的模块的Dependencies中的依赖却报错
- maven中pom.xml文件的继承关系
- 20秒 教你maven2的pom文件的依赖包如何写
- maven 排除第三方jar包中pom文件中的依赖引用包
- Maven构建SSH项目pom文件依赖包
- maven依赖报错,pom文件红叉
- springmvc项目的maven最简依赖文件:pom.xml