Maven 中常用的 scope 类型及其解析

server/2025/2/13 3:41:02/

在 Maven 中,scope 属性用于指定依赖项的可见性及其在构建生命周期中的用途。不同的 scope 类型能够影响依赖项的编译和运行阶段。以下是 Maven 中常用的 scope 类型及其解析:


compile(默认值):
这是默认的作用域。如果没有指定 scope,则依赖会被视作 compile 作用域。
在编译、运行和测试阶段都可用。
示例:<scope>compile</scope>

provided:
表示该依赖项在编译时需要,但在运行时由容器或运行环境提供(例如 Servlet API)。
适用于 JDK 提供的类库、服务器提供的类库等。
示例:<scope>provided</scope>

runtime:
该依赖项在编译时不需要,但在运行时需要(如 JDBC 驱动)。
适用于那些在编译时不要求的库,但是在运行时需要导入。
示例:<scope>runtime</scope>

test:
该依赖项仅在测试编译和运行中使用,不会被包含在最终的可执行 JAR 或 WAR 文件中。
适用于 JUnit 和 Mockito 等测试框架。
示例:<scope>test</scope>

system:
表示该依赖项是由用户提供的,并且需要提供其系统路径。使用此作用域时,必须提供 systemPath 属性,使 Maven 知道此依赖项的具体位置。
适用于不在 Maven 中央仓库中的 JAR 文件。
示例:
<dependency>
    <groupId>group-id</groupId>
    <artifactId>artifact-id</artifactId>
    <version>version</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/some-library.jar</systemPath>
</dependency>

import(仅适用于依赖管理):

这种作用域主要用于管理 BOM(Bill of Materials)依赖。
在 dependencyManagement 段落中使用,导入其他项目的依赖定义。
示例:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>group-id</groupId>
            <artifactId>artifact-id</artifactId>
            <version>version</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

总结
Maven 的 scope 属性允许开发者灵活地管理项目所需的依赖,以确保在不同的开发阶段中加载合适的库。通过合理使用这些作用域,可以减少不必要的依赖项,并确保构建的效率与灵活性。了解并运用好 Maven 的 scope 可以帮助开发者更好地管理项目的复杂性。


http://www.ppmy.cn/server/167228.html

相关文章

【深度学习】多目标融合算法(四):多门混合专家网络MMOE(Multi-gate Mixture-of-Experts)

目录 一、引言 二、MMoE&#xff08;Multi-gate Mixture-of-Experts&#xff0c;多门混合专家网络&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一、…

ping的网络协议,ping用到的网络协议!

ping命令使用的网络协议是ICMP&#xff08;Internet Control Message Protocol&#xff09;&#xff0c;即因特网控制消息协议。ICMP协议是TCP/IP协议簇的一个子协议&#xff0c;主要用于在IP主机、路由器之间传递控制消息&#xff0c;包括网络通不通、主机是否可达、路由是否可…

CSS 表单 实现响应式布局

前言 在现代 Web 开发中&#xff0c;表单是用户与网页交互的重要组成部分。一个设计良好的表单不仅要美观&#xff0c;更要具备优秀的用户体验和良好的响应式布局能力。本文将以一个简单的 HTML 表单为例&#xff0c;详细介绍如何使用 CSS 对表单进行美化并实现响应式设计。 …

c语言判断一个文件的文件格式

在 Linux 下使用 C 语言判断一个文件的文件格式&#xff0c;通常需要检查文件的头信息&#xff08;也称为“幻数”或“魔数”&#xff09;。不同的文件格式在文件头有特定的字节序列&#xff0c;这些字节序列可以用来确定文件的类型。以下是一个基本的示例&#xff0c;展示了如…

PHP函数介绍—get_headers(): 获取URL的响应头信息

概述&#xff1a;在PHP开发中&#xff0c;我们经常需要获取网页或远程资源的响应头信息。PHP函数get_headers()能够方便地获取目标URL的响应头信息&#xff0c;并以数组形式返回。本文将介绍get_headers()函数的用法&#xff0c;以及提供一些相关的代码示例。 get_headers()函…

在 Debian 12 中设置 Cron 作业(飞牛NAS定时自动重启实例)

在 Debian 12 中设置 Cron 作业是一个相对简单的过程&#xff0c;以下是详细的步骤和注意事项&#xff1a; 1. 安装 Cron Cron 通常在 Debian 系统中默认安装。如果未安装&#xff0c;可以通过以下命令安装&#xff1a; sudo apt-get update sudo apt-get install cron 2.…

React 第二十四节 useDeferredValue Hook 的用途以及注意事项详解

若有错误&#xff0c;欢迎批评指正 概述 React 18 引入的 useDeferredValue 是优化渲染性能的重要工具&#xff0c;特别适用于处理高开销的更新&#xff08;如实时搜索、大型列表渲染&#xff09;。它通过延迟非紧急的 UI 更新&#xff0c;保证用户交互的流畅性。然而&#x…

深入探究 Go 语言中的 Fx 框架:依赖注入的强大工具

在软件开发中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是一种重要的设计模式&#xff0c;它可以帮助我们降低代码的耦合度&#xff0c;提高代码的可测试性和可维护性。Go 语言作为一门高效、简洁的编程语言&#xff0c;拥有许多优…