必威体育Betway必威体育官网
当前位置:首页 > IT技术

maven dependency中provided和compile的区别

时间:2019-05-30 14:45:07来源:IT技术作者:seo实验室小编阅读:94次「手机版」
 

provided

在本地启动一个新项目时,

报错: java.lang.ClassnotfoundException: javax.servlet.Filter

环境intellJ idea,我同事的myEclipse就可以直接启动

最后搜了下问题

问题原因是:Spring boot项目中引入使用的是scope=provided

      

<dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

而默认情况下,idea是不会提供对应的servlet-api.jar包eclipse会提供

网上有人说这是idea的bug,这么说显然是不对的,是完全没有理解provided和compile的区别

对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。

   这么说可能不是很好理解:换个简单的,就是你在把这个项目打成war包时,scope=provided的jar包,不会出现在WEB-INFO/lib目录下,而scope=compile的jar包,会放到WEB-INFO/lib目录

        这样可以避免想servlet-api.jar这样的jar包冲突,但是如果遇到idea下默认不提供servlet-api.jar时,使用scope=provided就会缺少对应的jar包,也就是我遇到的问题找不到类

相关阅读

SEO优化与SEM推广的区别

 SEO优化和SEM推广有什么不同?这两种方式哪种好些呢?SEO实验室小编下面为您讲解一下:

品牌型网站与营销型网站的区别

现在很多企业在建设网站的时候不清楚网站应该做成什么类型的,网站的常规类型有产品展示型、品牌形象型、营销推广型。当然网站定位

网络推广和网络营销有什么区别

  网络推广和网络营销有什么区别?现在很多企业在网上发布产品和品牌信息,那么这种在网络上打广告的方式究竟是网络推广还是网络营

http与https有什么区别?

  http与https有什么区别?HTTP是超文本传输协议的缩写形式,而HTTPS表示安全的超文本传输协议。超文本传输协议是一组规则,必须遵循

域名和网址有什么区别?

 今天上海SEO优化给大家科普一下网站域名和网站网址的区别是什么?相信大家了解过网站域名,认为域名就是网址,其实不然,接下来小编为

分享到:

栏目导航

推荐阅读

热门阅读