关于maven依赖中的<scope>provided</scope>使用

今天开发web的时候,需要用到servlet-api,于是在pom.xml中添加依赖

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>3.0-alpha-1</version>
        </dependency>

通过插件启动tomcat的时候,报错,里面有一段是这样的:

Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

产生的原因是:tomcat中也有servlet-api包,这样,发生了冲突

解决方法:添加<scope>provided</scope>,因为provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了,完整依赖如下:

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>3.0-alpha-1</version>
            <scope>provided</scope>
        </dependency>
时间: 2024-11-02 00:51:20

关于maven依赖中的<scope>provided</scope>使用的相关文章

Maven依赖中的scope详解

原文链接:https://blog.csdn.net/kimylrong/article/details/50353161 原创kimy 发布于2015-12-18 17:36:48 阅读数 109197 收藏展开 Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了.今天梳理一下maven的scope. scope的分类compile默认就是com

Maven依赖中类似was cached in the local repository样的错误

我们在使用maven编译一个项目时经常会遇到诸如此类的问题. Could not get the value for parameter encoding for plugin execution default-resources Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: Failure to find org.code

maven依赖中部分依赖出现深灰色可能的解决方案

问题如图: 1.按照网上不少同志建议的:直接右键项目,强制更新maven,即Update project: 2.也是我遇到的问题,发现该依赖包已经下载,但是由于 Index downloads are disabled的问题解决方法如下: 原因:应该是maven自动下载index组件的功能没有开启: "Window" --> "Preferences" and choose Maven in the left side.勾选Download repositor

maven依赖 dependency中scope=compile 和 provided区别

问题再现 上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是provided的情况,比如如下: <dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-impl</artifactId> <version>6.1.0</version> <scope>provided</scope&

Maven依赖Scope标签用法

在一个maven项目中,如果存在编译需要而发布不需要的jar包,可以用scope标签,值设为provided.如下: <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> </depende

Maven依赖的Scope去除部署不需要的jar 包(打包)

<dependency> < groupId>javax.servlet</groupId> < artifactId>jsp-api</artifactId> < version>2.0</version> < scope>provided</scope> < /dependency> compile 默认的scope,表示  dependency 都可以在生命周期中使用.而且,这些d

Maven依赖的Scope去除部署不需要的jar 包

最近开发一个wap小项目,需要用到servlet-api.jar.jsp-api.jar,而tomcat\lib目录中已经拥有这两个jar包,照成编译正常,运行初始化异常,解决这个问题的方法就是使用<scope>标签,如下: <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</

Spring Boot打jar包,排除lombok等scope=provided的依赖

lombok可以使实体更简洁,主要是会在编译.class文件期间,生成get/set方法,还有hash/equals/toString等. 主要是可以让代码更简洁. @Data//生成get/set/toString/hash/equals等 @Accessors(chain = true)//开启链式调用,即H2user user = new H2user().setId(1).setName("https://www.cnblogs.com/tomcatandjerry/").se

spring boot 项目添加maven依赖时provided

spring boot 项目是自带tomcat 的,但是我们有时候是需要把项目打包成war 然后放到独立的tomcat中运行的,这个时候我们就需要将它自带的tomcat给排除开,这时候我们就可以使用<scope>provided</scope>来实现 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomc