关于maven:Maven的scope详解

44次阅读

共计 901 个字符,预计需要花费 3 分钟才能阅读完成。

前言

我的项目中 jar 包的加载个别有这么几个阶段:编译、测试、运行,理论我的项目构建过程中 jar 包应该可能满足不同的阶段有选择性地加载应用的需要,Maven 通过 scope 配置来满足这个需要。

分类

compile(默认)

在编译、测试和运行时都要应用该依赖 jar 包。

provided

编译和测试无效,运行有效。如 servlet-api,在我的项目运行时,tomcat 等容器曾经提供,无需 Maven 反复引入。

runtime

测试和运行无效,编译有效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才须要具体的 jdbc 驱动实现。

test

只对测试无效,表明只在测试的时候须要,在编译和运行时将无奈应用该类依赖 jar 包,如 junit。

system

被依赖 jar 不会从 maven 仓库中查找,而是从本地零碎中获取,须要和 systemPath 元素一起应用,用于指定本地零碎中 jar 文件的门路。

import

只在 <dependencyManagement> 中应用,示意从其它的 pom 中导入 dependency 的配置,这样能够简化配置导入的复杂度,同时实现 jar 包版本的对立治理等。上面常常遇到的应用 import 的一个实例:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.3.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
 
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

正文完
 0