您的位置:首页 > 运维架构

maven依赖关系中Scope的作用

2015-12-15 00:00 309 查看
摘要: <dependency>中有个<scope>,这个值决定了打包的时候,是否随项目一起发布,比方说填写 provided,那么你在打包的时候,meta-inf中的打包文件里面的class-path是不会包含的,因为它的意思是期望JDK、容器或使用者会提供这个依赖。所以执行的时候,找不到某个类的原因,就是因为打包根本没有包含进去。

<dependency>中的<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
* compile,缺省值,适用于所有阶段,会随着项目一起发布。 典型例子如:spring-core。在编译,测试、运行都需要用到它。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。使用这个选项,编译和测试的时候有效,但是在运行的时候无效,当你发现在eclipse里面运行成功,打包出去运行报错找不到类,大致就是因为你选了这个选项。
* runtime,只在运行时使用,典型例子如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 典型例子是jUnit,它只有在编译测试的时候和运行测试的时候才需要。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。 需慎重使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: