依赖范围控制哪些依赖在哪些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 是一种依赖范围控制机制,用于控制哪些依赖在哪些 classpath 中可用,哪些依赖包含在一个应用中。在 Maven 中,Scope 主要分为五种:compile、provided、runtime、test...
本文将深入探讨"Maven中scope test的使用以及依赖继承传递"这一主题,帮助开发者更好地理解和应用Maven的核心特性。 首先,`scope test`是Maven依赖管理中的一个关键概念。当我们在`pom.xml`文件中为某个依赖设置`...
`<scope>`标签在Maven的依赖管理中扮演着决定依赖范围的角色,它定义了特定的依赖在项目的哪些阶段可用,并决定了依赖是否会被包含在最终的部署包中。本文将详细解析`<scope>provided</scope>`的使用和意义。 `...
在Maven项目管理中,`scope`依赖范围是至关重要的概念,它决定了一个依赖在项目的不同阶段如何被引入和使用。Maven有多种scope类型,每个类型都有特定的适用场景和目的,帮助开发者精确控制项目的依赖关系。 1. **...
<scope>test</scope> ``` 通过以上介绍,我们可以看到Maven 3.0在项目管理和构建过程中扮演着重要角色,其改进和特性极大地简化了Java开发者的日常工作。通过熟练掌握Maven,开发者可以高效地构建、测试和...
<scope>test</scope> ``` Maven通过执行不同的生命周期阶段,如`clean`(清理项目)、`compile`(编译源代码)、`test`(运行测试)、`package`(打包应用)和`deploy`(部署应用),帮助开发者完成整个开发...
此外,书中的内容还会涵盖Maven的依赖管理和解决冲突的方法,如使用 exclusion 标签排除不想要的依赖,以及使用scope属性控制依赖的范围。读者还将了解到Maven仓库的概念,包括本地仓库、远程仓库和中央仓库,以及...
<scope>test</scope> ``` 3. **Maven生命周期与构建过程** Maven拥有一个清晰的生命周期,主要包括`clean`、`default`(或`compile`、`package`、`install`、`deploy`)和`site`三大阶段。在`default`阶段...
7. **Dependency Scope (依赖范围)** - Maven 的依赖范围包括 compile、test、provided、runtime、system 和 import。 - 不同的依赖范围决定了该依赖是否会被包含在最终的构建产物中。 8. **排除依赖** - ...
<scope>provided</scope> <!-- 添加其他依赖 --> ... ``` ### 四、编写Web应用 在`src/main/java`下创建你的Java类,例如Servlet,实现业务逻辑。在`src/main/webapp/WEB-INF`下编写`web.xml`,配置Servlet...
**Maven完全适用手册概述** Maven是一款强大的Java项目管理和集成工具,它通过XML格式的配置文件(pom.xml)来管理项目的构建、报告和依赖关系。Maven2相较于其前身Maven1进行了大量改进,提供了更高效、简洁的体验...
此外,Maven还支持依赖范围(scope),如编译(compile)、测试(test)、运行(runtime)等,以控制依赖在不同阶段的作用。 接下来是"Maven继承"。在大型项目中,多个模块可能共享相同的配置或依赖。Maven的继承...
<scope>test</scope> ``` 6. **Maven仓库** Maven 使用仓库管理依赖,包括本地仓库(默认在用户主目录的`.m2\repository`下)、中央仓库(http://repo1.maven.org/maven2/)和私有仓库(企业内部使用)。 7...
2. **合理管理scope**:理解并正确设置dependency的scope(如compile、runtime、test等),可以有效减少不必要的依赖引入。 3. **使用BOM(Bill of Materials)**:对于多个模块共用相同依赖的情况,可以考虑使用BOM...
<scope>test</scope> ``` 通过`mvn compile`命令,Maven会根据POM.xml中的配置,自动下载并管理依赖,编译项目源代码。其他常用命令包括`mvn test`(运行测试)、`mvn package`(打包项目)和`mvn install`...
在这种情况下,IntelliJ IDEA(简称idea)提供了离线模式来导入Maven项目,充分利用本地已经存在的Maven仓库。以下是详细的操作步骤和相关知识点: 1. **准备离线Maven仓库** 首先,你需要在有网络连接的计算机上...
<scope>test</scope> ``` - `<groupId>`:组织标识符,类似于Java包名的前缀。 - `<artifactId>`:项目名称。 - `<version>`:项目版本号。 - `<dependencies>`:项目的依赖关系列表。 #### 四、构建项目 *...
- **scope**: 作用范围。 在实际开发中,还需要根据项目需求配置具体的依赖库,例如使用Java EE 6.0和Spring MVC等技术栈。 #### 配置Maven远程仓库(私服) 除了中央仓库之外,还可以配置Maven连接到远程仓库...
<scope>test</scope> ``` 其中,`<groupId>`、`<artifactId>`和`<version>`是Maven用来唯一标识一个项目的三个坐标。例如,上述配置文件中的坐标为`com.yidu.maven:Hello:0.0.1-SNAPSHOT`。 #### 七、总结 ...
<scope>test</scope> ``` ### 三、Maven生命周期与构建阶段 Maven的生命周期包括`clean`、`default`和`site`三个阶段。其中,`default`生命周期是最常用的,包含了编译、测试、打包、验证等环节。例如,执行`...