Maven依赖管理
基本概念
假如存在A、B坐标,然后A依赖与B,A在pom.xml中添加B坐标,在添加坐标的时候(GAV)需要制定依赖,默认为compile
compile(编译范围)
1.值a在编译时依赖b,此范围默认为依赖范围;
2. 编译范围的依赖会用在编译、测试时运行;
3. 由于运行时需要,所以编译范围的依赖会被打包;
provided
1.provided依赖只有当在jdk或者一个容器以提供依赖之后才会使用;
2.provided依赖在编译和测试时需要,在运行期间不需要,比如servlet api 被tomcat所提供;
runtime
runtime依赖运行和测试系统的时候需要,但在编译的时候不需要
比如jdbc的驱动包。由于运行时需要,所以runtime范围的依赖会被打包
test
顾名思义,test依赖范围和名字差不多的,test在编译和运行时都不需要
他们只有在测试编译和测试运行阶段可用,比如junit才能用…
system
system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统的jar文件路径,需要指定systemPath磁盘路径
总结:
-
默认引入的jar包:compile,默认范围可以不写(编译、测试、运行都ok)
-
servlet-api、jsp-api、provided(编译测试有效,运行时无法阻止tomcat下jar的冲突)
-
jdbc驱动包:runtime
-
junit:test
(学习是日积月累的事情,当然遇到一些有趣的东西,是需要记录下来的,我认为maven的依赖范围蛮重要的…虽然是一些理论性的东西,但是还是希望对大家都能有帮助吧)
链接: link.
图片: