`

Maven SCOPE

    博客分类:
  • java
 
阅读更多
在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 详细说明 Maven 中的 Scope 是一种依赖范围控制机制,用于控制哪些依赖在哪些 classpath 中可用,哪些依赖包含在一个应用中。在 Maven 中,Scope 主要分为五种:compile、provided、runtime、test...

    maven 关于 scope test 和 继承传递的问题

    本文将深入探讨"Maven中scope test的使用以及依赖继承传递"这一主题,帮助开发者更好地理解和应用Maven的核心特性。 首先,`scope test`是Maven依赖管理中的一个关键概念。当我们在`pom.xml`文件中为某个依赖设置`...

    maven依赖关系中的<scope>provided</scope>使用详解

    `<scope>`标签在Maven的依赖管理中扮演着决定依赖范围的角色,它定义了特定的依赖在项目的哪些阶段可用,并决定了依赖是否会被包含在最终的部署包中。本文将详细解析`<scope>provided</scope>`的使用和意义。 `...

    Maven之scope依赖范围.docx

    在Maven项目管理中,`scope`依赖范围是至关重要的概念,它决定了一个依赖在项目的不同阶段如何被引入和使用。Maven有多种scope类型,每个类型都有特定的适用场景和目的,帮助开发者精确控制项目的依赖关系。 1. **...

    maven3.0 maven3.0

    <scope>test</scope> ``` 通过以上介绍,我们可以看到Maven 3.0在项目管理和构建过程中扮演着重要角色,其改进和特性极大地简化了Java开发者的日常工作。通过熟练掌握Maven,开发者可以高效地构建、测试和...

    maven3.8下载包

    <scope>test</scope> ``` Maven通过执行不同的生命周期阶段,如`clean`(清理项目)、`compile`(编译源代码)、`test`(运行测试)、`package`(打包应用)和`deploy`(部署应用),帮助开发者完成整个开发...

    Maven 实战(中文pdf)

    此外,书中的内容还会涵盖Maven的依赖管理和解决冲突的方法,如使用 exclusion 标签排除不想要的依赖,以及使用scope属性控制依赖的范围。读者还将了解到Maven仓库的概念,包括本地仓库、远程仓库和中央仓库,以及...

    第一个maven工程案例

    <scope>test</scope> ``` 3. **Maven生命周期与构建过程** Maven拥有一个清晰的生命周期,主要包括`clean`、`default`(或`compile`、`package`、`install`、`deploy`)和`site`三大阶段。在`default`阶段...

    Maven Web基础搭建示例

    <scope>provided</scope> <!-- 添加其他依赖 --> ... ``` ### 四、编写Web应用 在`src/main/java`下创建你的Java类,例如Servlet,实现业务逻辑。在`src/main/webapp/WEB-INF`下编写`web.xml`,配置Servlet...

    maven使用文档,maven使用文档

    7. **Dependency Scope (依赖范围)** - Maven 的依赖范围包括 compile、test、provided、runtime、system 和 import。 - 不同的依赖范围决定了该依赖是否会被包含在最终的构建产物中。 8. **排除依赖** - ...

    maven依赖+继承+聚合

    此外,Maven还支持依赖范围(scope),如编译(compile)、测试(test)、运行(runtime)等,以控制依赖在不同阶段的作用。 接下来是"Maven继承"。在大型项目中,多个模块可能共享相同的配置或依赖。Maven的继承...

    Maven完全适用手册

    **Maven完全适用手册概述** Maven是一款强大的Java项目管理和集成工具,它通过XML格式的配置文件(pom.xml)来管理项目的构建、报告和依赖关系。Maven2相较于其前身Maven1进行了大量改进,提供了更高效、简洁的体验...

    maven安装包

    <scope>test</scope> ``` 6. **Maven仓库** Maven 使用仓库管理依赖,包括本地仓库(默认在用户主目录的`.m2\repository`下)、中央仓库(http://repo1.maven.org/maven2/)和私有仓库(企业内部使用)。 7...

    MavenHelper插件 帮你检查maven的各种冲突

    2. **合理管理scope**:理解并正确设置dependency的scope(如compile、runtime、test等),可以有效减少不必要的依赖引入。 3. **使用BOM(Bill of Materials)**:对于多个模块共用相同依赖的情况,可以考虑使用BOM...

    idea离线导入maven项目

    在这种情况下,IntelliJ IDEA(简称idea)提供了离线模式来导入Maven项目,充分利用本地已经存在的Maven仓库。以下是详细的操作步骤和相关知识点: 1. **准备离线Maven仓库** 首先,你需要在有网络连接的计算机上...

    Maven开发包下载

    <scope>test</scope> ``` 通过`mvn compile`命令,Maven会根据POM.xml中的配置,自动下载并管理依赖,编译项目源代码。其他常用命令包括`mvn test`(运行测试)、`mvn package`(打包项目)和`mvn install`...

    maven第三方仓库配置

    <scope>test</scope> ``` 其中,`<groupId>`、`<artifactId>`和`<version>`是Maven用来唯一标识一个项目的三个坐标。例如,上述配置文件中的坐标为`com.yidu.maven:Hello:0.0.1-SNAPSHOT`。 #### 七、总结 ...

    IDEA11 Maven3快速入门及应用

    - **scope**: 作用范围。 在实际开发中,还需要根据项目需求配置具体的依赖库,例如使用Java EE 6.0和Spring MVC等技术栈。 #### 配置Maven远程仓库(私服) 除了中央仓库之外,还可以配置Maven连接到远程仓库...

    5分钟熟悉Maven

    <scope>test</scope> ``` - `<groupId>`:组织标识符,类似于Java包名的前缀。 - `<artifactId>`:项目名称。 - `<version>`:项目版本号。 - `<dependencies>`:项目的依赖关系列表。 #### 四、构建项目 *...

    maven 实战 所有源代码

    <scope>test</scope> ``` ### 三、Maven生命周期与构建阶段 Maven的生命周期包括`clean`、`default`和`site`三个阶段。其中,`default`生命周期是最常用的,包含了编译、测试、打包、验证等环节。例如,执行`...

Global site tag (gtag.js) - Google Analytics