maven中scope属性的compile、test、provided有什么区别?

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

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
	<!-- 为了可以正常使用HttpServlet,需要导入Servlet api依赖 -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
		<scope>provided</scope>
	</dependency>
	
	<!-- 在Web工程中引入jar工程   -->
	<dependency>
		<!--坐标信息-->
		<groupId>com.ldsnet.maven</groupId>
		<artifactId>pro01-maven-java</artifactId>
		<version>1.0-SNAPSHOT</version>
		<scope>compile</scope>
	</dependency>

常见的是这三个值: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,则可能会引起冲突报错。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值