exescope使用教程 exescope使用教程分享

依赖是maven提供的主要功能之一。无论我们需要什么依赖项,我们只需要将它们添加到POM.xml中。由于maven,所有必需的类和资源都会自动添加到项目的类路径中。一.依赖关系在POM

本文最后更新时间:  2023-03-27 04:21:17

依赖是maven提供的主要功能之一。无论我们需要什么依赖项,我们只需要将它们添加到POM.xml中。由于maven,所有必需的类和资源都会自动添加到项目的类路径中。

一.依赖关系

在POM 4中,<>这

*默认值compile适用于所有阶段,并将随项目一起发布。

*假设,类似于编译,预计JDK、容器或消费者将提供此依赖关系。比如servlet.jar

* runtime,只在运行时使用,如JDBC驱动,适用于运行和测试阶段。

* test,仅在测试期间使用,用于编译和运行测试代码。不会随项目一起发布。

* system,与provided类似,需要显式提供一个包含依赖项的jar,Maven不会在存储库中查找。

请看下面的例子:

& lt依赖性& gt

& ltgroupId & gtorg . spring framework . boot </groupId >

& ltartifactId & gt弹簧-启动-启动-Tomcat </artifact id >

& lt范围& gt提供& lt/scope >

& lt/dependency >

二。范围参数值

作用域的值有以下几种可能,将在不同的情况下进行解释。

(1)编译

缺省值是compile,没有配置任何东西,这意味着编译。编译意味着依赖项目需要参与当前项目的编译。当然后续的测试和运行周期也有涉及,这是一种很强的依赖性。包装的时候,一般都需要包含。的默认作用域将在部署时打包在lib目录中,项目在编译、测试和运行阶段都需要它。

(2)测试

范围测试是指依赖项目只参与测试相关的工作,不会在编译运行环境中使用,更不用说打包了。

(3)运行时间

它只适用于运行环境,不会用于编译和测试环境。

(4)提供

在一个适合编译测试的环境下,很接近编译,但是provided只需要在编译测试阶段,同样provided也不会打包在lib目录下。

(5)系统

参与方面,也和提供的一样,但是依赖项不会从maven仓库抓取,而是从本地文件系统抓取,必须和systemPath属性配合使用。

三。范围的相关传输

a->b->丙.当前项目是A,A依赖于B,B依赖于C,知道了B在项目A中的作用域,怎么知道C在项目A中的作用域呢?答案是:

测试或提供C时,直接丢弃C,A不依赖C;

否则,A依赖于C,C的作用域继承B的作用域。

为什么需要区分这些范围?

它可以用来限制依赖的范围。不同的jar包可以在不同的环境中打包。比如junit测试类的jar包,可以设置成不编译不运行就测试。

四。

true & lt/可选& gt属性

还有最后一个

& lt依赖性& gt

& ltgroupId & gtorg . spring framework . boot </groupId >

& ltartifactId & gtspring-boot-devtools/artifact id >

& lt可选& gttrue & lt/可选& gt

& lt/dependency >

在添加依赖项时,我们可以使用可选的熟悉度或将范围设置为“提供”。在这两种情况下,依赖项都会在声明它们的模块的类路径中,但是使用将它们定义为依赖项的模块不会在其他项目中传递它们,也就是不会形成依赖项传递。

例如,在上面的例子中,您可以在SpringBoot官网文件中获得<>

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。