maven中scope属性的compile、test、provided有什么区别?
创始人
2025-05-30 15:58:04

这个标签在maven项目中的pom.xml中,例如:

  junitjunit4.12testjavax.servletjavax.servlet-api3.1.0providedcom.ldsnet.mavenpro01-maven-java1.0-SNAPSHOTcompile

常见的是这三个值:compile\test\provided,还可能是下面这几个值:system/runtime/import,
本文只笔记compile\test\provided的区别和应用场景。

一、compile
在main目录(空间)下有效
在test目录(空间)下也有效
在开发过程(时间)有效
在部署到服务器(时间)有效

二、test
在main目录(空间)下无效
在test目录(空间)下也有效
在开发过程(时间)有效
在部署到服务器(时间)无效

三、provided
在main目录(空间)下有效
在test目录(空间)下也有效
在开发过程(时间)有效
在部署到服务器(时间)无效

部署有没有效,主要是指打包到JAR包或者WAR包中,能不能使用。

在这里插入图片描述

总结:
1. compile是缺省设置,需要在开发的整个过程中都用到;
2. test 只是在测试过程中用到,所以不需要在main目录下使用,也不需要发布到服务器中;
3. provided意思是,这种jar包是tomcat已经提供的了,所以不需要像compile那样打包时再打进去。例如servlet-api、jsp-api,此时,如果强行改为缺省的compile,则可能会引起冲突报错。

相关内容

热门资讯

中国创新金融研究院理事长傅诚刚... 由三亚市人民政府主办,《财经》杂志、财经网、《财经智库》、三亚中央商务区管理局、三亚经济研究院承办的...
国家安全部披露:境外间谍假装交... 在数字空间的深处,与你彻夜畅谈的“宝藏网友”,或许正在编织一张温柔的陷阱。当“生财之道”“高薪兼职”...
恒生电子股份有限公司执行总裁官... 由三亚市人民政府主办,《财经》杂志、财经网、《财经智库》、三亚中央商务区管理局、三亚经济研究院承办的...
浙江生殖医学团队援疆记:千里之... 中新网杭州12月28日电(张煜欢)如何引入最先进的试管婴儿技术帮助不孕家庭更好地实现生育梦想?这是乌...
一周军评: 刚出炉的《中国军力... 【文/观察者网专栏作者 施洋】 本周,对于世界海军观察人士而言,可能是心情复杂的一周:美国总统特朗普...