compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去 provided依赖:在编译和测试的过程有效,最后生成war包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突 runtime在运行的时候依赖,在编译的时候不依赖 默认的依赖范围是compile 。 3、 传递的冲突问题 1、 ...
对于使用这些库进行开发的项目,其依赖的servlet-api和jsp-api库的scope应该是provided。在构建过程中,这些库不会被包含在最终的打包文件中,因为它们在运行时由Web服务器提供。总结一下,compile、test和provided的区别主要在于依赖项在项目中的可用阶段和使用方式。根据实际需要选择合适的scope可以使项目的构建更加清晰和灵...
51CTO博客已为您找到关于maven provided 与 compile 的区别的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及maven provided 与 compile 的区别问答内容。更多maven provided 与 compile 的区别相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成
maven scope 'provided' 和‘compile’的区别 对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact(模块)对应的jar包在classpath中。 而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。 换句话说,它只影响到编译,测试阶段。在编译测试阶段,...
provided 跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些JavaEE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。 runtime 表示dependency不作用在编译时,但会作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。 test表示dependency作用在测试时,不作用在运行时。 只在测试时使用...
一、compile:编译范围compile是默认的范围;如果没有提供一个范围,编译范围依赖在所有的classpath 中可用,同时它们也会被打包。而且这些dependency会传递到依赖的项目中。 二、provided:已提供范围provided 明了dependency 由JDK或者容器提供。例如如果开发了一个web 应用,可能在编译 classpath 中需要可用的ServletAPI来编译...
3.6 区别 综上所述,各个依赖作用域的区别如下表所示:4. 影响依赖传递的因素 4.1 依赖作用域(scope)依赖作用域会影响依赖传递,从上表可以看出,如果scope为provided或者test,该依赖不会传递,只有scope为compile或者runtime,该依赖才会传递。4.2 可选依赖(optional)通过dependency标签引入依赖时,可以通过<...
Maven有6个依赖域。他们分别是Compile,Provided,Runtime,Test,System,Import。这里需要解释一下scope的依赖传递A–>B–>C。当前项目为A,A依赖于B,B依赖于C。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?答案是: 当C是test或者provided时,C直接被丢弃,A不依赖C; ...