pom.xml文件中的Scope标签

pom.xml文件中的Scope标签,第1张

我们在Maven项目,pom.xml文件中经常会碰到scope这个标签,有些同学搞不清楚这个scope对依赖的jar包团敏有什么用。

在回答这个问题之前,我先简单的阐述一下java程序运行的阶段:

源码 =>编译 =>测试=>运行 =>打包 =>部署

上述程序中同学们应该都可以看的懂,编写一个servlet 打印 hello world。

1.IDE在编译阶段按照pom.xml中的依赖关系会去查找log4j servlet的二方包,如果找不到就会出现错误

2.在测试某个函数会调用junit 二方包

3.运行阶段

4.打包的时候,pom.xml会告诉maven,哪些jar不需要打进去

所以它的pom.xml应该是这样的

总结:我们平常最大的scope疑问在provided 和 runtime之间。记住一个原则就行,如果容器有的jar,在项族或局目pom.xml中就使用provided如果需要动态加载的jar就使用兆让runtime 。默认scope是compile

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

https://blog.csdn.net/qq_31071543/article/details/91350906

https://www.jianshu.com/p/a9bd44a83dc5

https://www.cnblogs.com/moxiaotao/p/9965410.html

scope 元慧毕庆素为maven dependency下面一个控制作用域的子元素,maven官方称为transitive dependencies有6个可选值,其值可以为:compile, provided, runtime, test, system and import,各自的作用为:

2.provided: provided与compile基本相同,但表示前握需要JDK或者容器提供一个运行时的依赖,比如说当部署运行一个web应用时,这时候 servlet api或者类似的J2EE的API需要将scope写成provided,该属性不具备传递性,不会出现在打出的war包中

5.system:与provided类似 唯一不同的时 需要提供一个明确包含该jar,该jar包的aritfact是基于本地,不是maven 三方库中的,正常情况下不使用

6.import: 仅maven 2.0.9版本之后才支持该scope,并且仅可用于 pom类型的依赖,该属性打破了依赖的传递性,指定使用特数乱定的pom


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12301429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存