依赖范围控制
哪些依赖在哪些classpath中可用,哪些依赖包含在一个应用中。让我们详细看一下每一种范围:
compile (编译范围)默认范围
compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。
编译范围依赖在所有的classpath 中可用,同时它们也会被打包。
provided (已提供范围)
provided 依赖
只有在当JDK 或者一个容器已提供该依赖之后才使用。例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。
runtime (运行时范围)
runtime 依赖在
运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC
驱动实现。
test (测试范围)
test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
system (系统范围)
system范围依赖与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven 也不会在仓库中去寻找它。
如果你将一个依赖范围设置成系统范围,你必须同时提供一个 systemPath 元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven 仓库中引用依赖)。
分享到:
相关推荐
在Maven项目管理中,`scope`依赖范围是至关重要的概念,它决定了一个依赖在项目的不同阶段如何被引入和使用。Maven有多种scope类型,每个类型都有特定的适用场景和目的,帮助开发者精确控制项目的依赖关系。 1. **...
Maven 中的 Scope 是一种依赖范围控制机制,用于控制哪些依赖在哪些 classpath 中可用,哪些依赖包含在一个应用中。在 Maven 中,Scope 主要分为五种:compile、provided、runtime、test 和 system。 compile...
在压缩包中的“Maven依赖特性”可能包含了一些特定的示例或者配置,用于展示Maven如何处理不同类型的依赖特性,例如:范围(scope,如compile、test等)、排除依赖、强制版本等。通过实际操作这些例子,你可以更深入...
3. **依赖范围(scope)**:Maven允许我们定义依赖的范围,如compile(编译范围)、test(测试范围)、runtime(运行时范围)等。不同范围的依赖会在不同的阶段被引入到类路径中。 4. **依赖解决**:Maven会自动...
此外,Maven还支持依赖范围(scope),如编译(compile)、测试(test)、运行(runtime)等,以控制依赖在不同阶段的作用。 接下来是"Maven继承"。在大型项目中,多个模块可能共享相同的配置或依赖。Maven的继承...
本文将深入探讨"Maven中scope test的使用以及依赖继承传递"这一主题,帮助开发者更好地理解和应用Maven的核心特性。 首先,`scope test`是Maven依赖管理中的一个关键概念。当我们在`pom.xml`文件中为某个依赖设置`...
依赖范围(scope)是Maven依赖管理的一个重要概念。scope定义了依赖项的使用范围,主要有以下几个选项:compile、provided、runtime和test。compile表示依赖项在编译时需要,provided表示依赖项在编译和测试时需要,但...
`<scope>`标签在Maven的依赖管理中扮演着决定依赖范围的角色,它定义了特定的依赖在项目的哪些阶段可用,并决定了依赖是否会被包含在最终的部署包中。本文将详细解析`<scope>provided</scope>`的使用和意义。 `...
在Java开发领域,Maven是一个广泛使用的项目管理和综合工具,它通过XML格式的配置文件管理项目的构建、报告和依赖关系。本示例“简单的maven父子依赖的sample”旨在介绍如何在Maven项目中设置父子模块间的依赖关系,...
在本主题中,我们将深入探讨“Springboot的测试类的Maven依赖”。首先,我们需要理解Maven作为Java项目的构建工具,如何管理和组织项目依赖。 在Maven的配置文件`pom.xml`中,我们可以声明所需的依赖,包括Spring ...
Maven的`<scope>`标签可以用来控制依赖的生命周期和作用范围。在上述问题中,将`<scope>`设置为`runtime`是一个有效的解决方案。这意味着在编译时,该依赖不会被包含进目标类路径,但在运行时是必需的。对于WAR类型...
在Maven项目中,正确配置ojdbc8的依赖对于确保应用程序能够顺利连接到Oracle数据库至关重要。本文将深入探讨ojdbc8在Maven中的使用、依赖配置以及其相关知识点。 首先,了解ojdbc8的基本信息是必要的。ojdbc8是...
使用`<scope>system</scope>`和`<systemPath>`的方式,可以有效地将本地的JAR包纳入到Maven项目的依赖管理中。 #### 2. 安装本地JAR至本地仓库 另一种更为推荐的做法是将本地的JAR包安装到Maven的本地仓库中,通过...
在这个版本中,开发者可以利用Maven作为构建工具来管理项目的依赖关系。 Maven 是Apache软件基金会的一个项目,它是一个项目管理和综合工具,主要用于Java项目。Maven通过使用一种标准的项目对象模型(Project ...
在本文中,我们将深入探讨...总结,整合Spring Boot 2与Activiti 7涉及创建Maven工程,添加依赖,配置`activiti.cfg.xml`文件,以及设置数据库连接。理解并实践这些步骤,你就能成功地搭建起一个基础的流程自动化平台。
它引入了新的依赖范围和更精确的依赖解析算法,减少了由于依赖问题导致的构建失败。 3. **增强的插件管理**:Maven 3.0 引入了插件版本管理,允许在父POM中定义插件版本,子模块可以直接继承,减少了重复代码,提高...
Maven 打包可执行 jar 并包含 Maven 依赖和本地依赖 Maven 是一个流行的项目管理工具,它提供了强大的依赖管理和打包功能。在实际开发中,我们经常需要将 Maven 项目打包成可执行的 jar 文件,并包含 Maven 依赖和...
在Java开发环境中,我们通常会利用Maven作为构建工具来管理和组织项目的依赖。"契约测试jars by Maven依赖"这个主题,就是关于如何在Maven项目中引入契约测试的相关库。 Pact是一种流行的契约测试框架,它支持多种...
2. **合理管理scope**:理解并正确设置dependency的scope(如compile、runtime、test等),可以有效减少不必要的依赖引入。 3. **使用BOM(Bill of Materials)**:对于多个模块共用相同依赖的情况,可以考虑使用BOM...
7. **Dependency Scope (依赖范围)** - Maven 的依赖范围包括 compile、test、provided、runtime、system 和 import。 - 不同的依赖范围决定了该依赖是否会被包含在最终的构建产物中。 8. **排除依赖** - ...