本文主要是介绍【maven】scope,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先要明白maven有3种classpath,不同阶段对应不同的classpath。
test:只在test阶段用;
compile:只在compile阶段用;
runtime:最后jar包里打入的;
依赖的scope就是用与指定这个依赖出现在上述哪一个classpath的。
最常见的是compile,默认也是这个,表示会出现在上面所有的classpath中。
最简单的事test,只在test时出现,其他的都不会出现,比如说junit。
还有两个常见的,分别为
provided:只出现在compile的test阶段,不会被打入jar包。这是因为通常在运行的环境中会提供这些依赖,比如说servlet-api.jar,常见的web容器都会提供。
runtime:只出现在test和runtime阶段,会被打入jar包,在编译时不需要。这通常是一些实现类,编译时不用因为依赖的是它实现的接口,在运行时才会找实现类,比如说mysql的connector实现类。
合理使用scope可以控制jar包大小以及是否与外部容器环境的冲突。
另外如果是与maven-dependency-plugin一起使用,需要使用excludeScope配置才能生效。
传递依赖,scope被传递依赖时,保留结果:
图片来自于:https://blog.csdn.net/kimylrong/article/details/50353161
这篇关于【maven】scope的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!