在Maven的依赖管理中,经常会用到依赖的scope设置。这里整理下各种scope的使用场景和说明,以及在使用中的实践心得。
scope的使用场景和说明
1.compile
编译范围,默认scope,在工程环境的classpath(编译环境)和打包(如果是WAR包,会包含在WAR包中)时候都有效。
2.provided
容器或JDK已提供范围,表示该依赖包已经由目标容器(如tomcat)和JDK提供,只在编译的classpath中加载和使用,打包的时候不会包含在目标包中。最常见的是j2ee规范相关的servlet-api和jsp-api等jar包,一般由servlet容器提供,无需在打包到war包中,如果不配置为provided,把这些包打包到工程war包中,在tomcat6以上版本会出现冲突无法正常运行程序(版本不符的情况)。
3.runtime
一般是运行和测试环境使用,编译时候不用加入classpath,打包时候会打包到目标包中。一般是通过动态加载或接口反射加载的情况比较多。也就是说程序只使用了接口,具体的时候可能有多个,运行时通过配置文件或jar包扫描动态加载的情况。典型的包括:JDBC驱动等。
4.test
测试范围,一般是单元测试场景使用,在编译环境加入classpath,但打包时不会加入,如junit等。
5.system
系统范围,与provided类似,只是标记为该scope的依赖包需要明确指定基于文件系统的jar包路径。因为需要通过systemPath指定本地jar文件路径,所以该scope是不推荐的。如果是基于组织的,一般会建立本地镜像,会把本地的或组织的基础组件加入本地镜像管理,避过使用该scope的情况。
实践:
- provided是没有传递性的,也就是说,如果你依赖的某个jar包,它的某个jar的范围是provided,那么该jar不会在你的工程中依靠jar依赖传递加入到你的工程中。
- provided具有继承性,上面的情况,如果需要统一配置一个组织的通用的provided依赖,可以使用parent,然后在所有工程中继承。
相关推荐
Maven 中的 Scope 详细说明 Maven 中的 Scope 是一种依赖范围控制机制,用于控制哪些依赖在哪些 classpath 中可用,哪些依赖包含在一个应用中。在 Maven 中,Scope 主要分为五种:compile、provided、runtime、test...
本文将深入探讨"Maven中scope test的使用以及依赖继承传递"这一主题,帮助开发者更好地理解和应用Maven的核心特性。 首先,`scope test`是Maven依赖管理中的一个关键概念。当我们在`pom.xml`文件中为某个依赖设置`...
### Maven 使用文档详解 #### Maven 简介与特点 Maven 是一款强大的项目管理和构建工具,主要用于 Java 项目的管理。Maven 提供了统一的标准流程来管理项目的生命周期、依赖关系以及项目信息等,极大地提高了开发...
使用`<scope>provided</scope>`表明Maven在编译和测试期间会使用这些依赖,但在打包或部署时不包括它们,因为预期目标环境(如JDK或应用服务器)已经提供了这些库。 例如,在开发Web应用程序时,通常需要`javax....
在Maven项目管理中,`scope`依赖范围是至关重要的概念,它决定了一个依赖在项目的不同阶段如何被引入和使用。Maven有多种scope类型,每个类型都有特定的适用场景和目的,帮助开发者精确控制项目的依赖关系。 1. **...
Apache Maven 是一个项目管理和综合工具,尤其在Java开发领域中被广泛使用。Maven 3.0是Maven的一个重要版本,它引入了许多改进和新特性,旨在提高开发效率,增强构建过程的可配置性和稳定性。 ### Maven 3.0 的...
Maven2完全使用手册旨在全面讲解Maven2的使用和配置,帮助开发者更好地理解和掌握这款强大的Java项目管理工具。相较于Maven1,Maven2进行了大幅度的改进,提升了性能并简化了配置过程。 1. **更快、更简单**:Maven...
### Maven 使用入门详解 #### Maven 介绍与优势 Maven 是一款流行的 Java 项目管理和构建工具,它通过一套标准化的方法来简化项目的构建过程。Maven 的核心价值在于它能够简化项目构建过程,使得开发者能够更加...
### Maven2 使用笔记 #### Maven2简介 Maven2是一个非常强大的开源项目管理与构建工具。它通过一种项目对象模型(Project Object Model, POM)来管理项目的构建、报告和文档。POM是一个XML文件(通常命名为`pom.xml...
在使用Maven 3.8时,你需要根据自己的系统环境(Windows、Linux或Mac)将bin目录添加到PATH环境变量中,这样就可以在任何地方运行`mvn`命令。然后,你可以创建一个新的Maven项目,通过编写POM.xml文件来定义项目结构...
此外,Maven还支持依赖范围(scope),如compile(编译)、test(测试)、runtime(运行时)等,用于指定依赖在不同构建阶段的作用域。 ### 插件与目标 Maven插件提供了执行特定构建任务的功能,每个插件通常包含...
使用ECLIPSE创建MAVEN工程图解 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE), Maven 是一个基于项目对象模型(POM)的项目管理工具。本文将指导您如何使用Eclipse 创建 Maven 工程,并了解 Maven 的...
### Maven 入门使用 #### 一、Maven 安装与配置 Maven 是一款自动化构建工具,它可以帮助开发者简化 Java 项目的构建过程。在使用 Maven 之前,首先需要安装并配置好 Maven 环境。 **1. Maven 安装** - 下载 ...
Maven使用仓库来存储和获取依赖。默认的本地仓库位于用户主目录的`.m2`目录下,远程仓库通常包括中央仓库(Maven Central Repository)和其他自定义的私有仓库。 7. **Maven命令** 常用的Maven命令包括: - `mvn...
本篇文章将详细讲解如何使用Maven插件`proguard-maven-plugin`来对可执行JAR文件进行混淆。 首先,我们需要理解ProGuard是一个强大的Java类文件混淆器,它可以删除无用的代码,缩短类和方法的名称,以及重新打包类...
### Maven使用教程:掌握高效项目构建的艺术 #### Maven:解决依赖地狱的利器 在软件开发领域,特别是Java项目中,管理各种开源框架和第三方库的依赖关系曾是一项复杂且耗时的任务。Maven的出现彻底改变了这一局面...
此外,书中的内容还会涵盖Maven的依赖管理和解决冲突的方法,如使用 exclusion 标签排除不想要的依赖,以及使用scope属性控制依赖的范围。读者还将了解到Maven仓库的概念,包括本地仓库、远程仓库和中央仓库,以及...
### Maven 下载、安装、配置与使用教程及相关项目 #### 一、引言 Maven作为一款优秀的项目管理和构建工具,对于Java开发者来说至关重要。它不仅简化了项目的构建过程,还提高了开发效率。本文旨在详细介绍如何下载...
在本文中,我们将深入探讨 Maven 的核心概念、安装过程以及如何使用 Maven 对 Java 项目进行管理。 1. **Maven的核心概念** - **项目对象模型(Project Object Model,POM)**:Maven 的核心是 POM,它是 Maven ...