无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(scope provided) maven依赖关系中的provided使用详解 全网首发(图文详解1)

前沿技术 Micheal 6个月前 (06-14) 91次浏览 已收录 扫描二维码

(scope provided) maven依赖关系中的provided使用详解

在 Maven 的依赖关系中,<scope>元素定义了编译、测试、运行时的类路径的构建方式,以及它对项目的其它阶段是否可用。下面是 <scope> 的五个主要值:

  • compile (默认)
  • provided
  • runtime
  • test
  • system

<scope>provided</scope> 是其中的一种。 这是一个类似于 compile 的范围,但是假设您不需要在项目的运行时或部署时传递依赖关系。 比如,如果您正在开发一个 Java Servlet,并且 servlet API 包已经由您的servlet 容器提供,那么这个包应该被设置为 provided 范围。

在使用 <scope>provided</scope> 的场景,例如当你在使用JBoss或任何们其他的一个应用服务器,并且这个服务器已经具有例如JDBC这样的框架实现,那么你在编写应用的时候可能需要这个框架做编译研发,但是在最后部署的时候并不需要,因为应用服务器已经提供了。

关于如何配置和使用请参阅如下案例:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>

在这个例子中,servlet-api 是默认情况下由大多数的 servlet 容器(例如Tomcat, Jetty, JBoss)提供的。因此,在这个项目中,我们只需要在编译时使用这个api,而不需要将它包含在最后的应用包(war, ear)之中,所以我们将其范围设置为 provided

这样在打包的时候,Maven 就不会将它包含在生成的 WAR 文件中,因为我们默认的已经“提供”它了。

需要注意的是,在 provided 范围中的依赖并不会被传递,也就是说,如果项目A依赖于项目B,而项目B又依赖于声明为 provided 的项目C。当项目A去编译的时候,并不会包含项目C。
(uniapp h5) 如何在uniapp项目中嵌套H5 页面 在uniApp项目中嵌套H5页面 全网首发(图文详解1)
(0xc004f074 软件授权服务报告无法激活) win11错误代码0xC004F074无法激活修复的解决办法 Windows 11激活错误代码0xC004F074解决方法 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝