这个标签在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,则可能会引起冲突报错。