`

Maven_Scope取值的含义

 
阅读更多

via: http://www.kankanews.com/ICkengine/archives/3061.shtml

 

maven依赖关系中Scope的作用

 

Dependency Scope

 

在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

 

* compile,缺省值,适用于所有阶段,会随着项目一起发布。 

* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 

* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 

* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 

* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

 

依赖范围控制哪些依赖在哪些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_archetype-catalog.zip

    标题中的"maven_archetype-catalog.zip"就是一个Maven Archetype Catalog的压缩包,它包含了一个或多个archetype-catalog.xml文件,这些文件是Maven Archetype的目录,列出了所有可用的项目模板。当我们在Eclipse中...

    xjar_maven_plugin.rar

    【xjar_maven_plugin.rar】是一个压缩包,包含与Java开发相关的工具,特别是针对Maven项目的xjar-maven-plugin插件。这个插件是用于帮助Java开发者在构建过程中对jar包进行加密,以保护其中的代码和资源不被轻易访问...

    maven_repository .zip

    Maven框架,本地jar资源仓,中央仓下载jar资源 有时在你的构建过程中,需要将第三方jar包添加到本地仓库中,因为它并存在于像Maven中央仓库或其它的公共仓库中。为了让Maven能够正确获取到jar包,第三方jar包必须...

    maven_springmvc_mybatis_demo-master.zip_DEMO_cutdm5_maven SSM_ma

    【标题】"maven_springmvc_mybatis_demo-master.zip_DEMO_cutdm5_maven SSM_ma" 提供了一个关于 Maven、SpringMVC 和 MyBatis 集成的示例项目,这是一款常见的Java Web开发框架组合。Maven是项目管理和构建工具,...

    12-Maven_maven_

    ** Maven详解:构建Java项目的专业工具 ** Maven是一个强大的项目管理工具,广泛应用于Java开发领域,它通过自动化构建流程,简化项目的构建、依赖管理和文档生成。Maven使用一种标准化的项目对象模型(Project ...

    maven_实战_学习笔记

    maven_实战_学习笔记 Maven安装 Maven 使用入门 主代码 位置:src/main/java 命令:mvn clean compile 解释:clean告诉maven清理target目录 compile告诉maven 编译项目主代码 测试代码 位置:src/test/java 命令...

    maven_local_repository

    maven_local_repositorymaven_local_repositorymaven_local_repositorymaven_local_repositorymaven_local_repositorymaven_local_repositorymaven_local_repositorymaven_local_repositorymaven_local_...

    Maven_SSM_fapiao

    【标题】"Maven_SSM_fapiao"项目解析 该项目名为"Maven_SSM_fapiao",显然是一个基于Maven构建的Java Web项目,它整合了Spring、Spring MVC(通常简称为SSM)框架,用于发票管理或者与发票相关的业务处理。下面将...

    Maven_Example_A

    【标题】"Maven_Example_A" 涉及的是 Maven 的实际应用示例,它是一种在Java开发中广泛使用的项目管理和构建工具。Maven通过使用一个项目对象模型(Project Object Model, POM),能够自动化项目的构建、报告和依赖...

    maven_清理.bat

    清理maven下载失败的jar包 需要修改路径,改到自己maven下的仓库路径

    maven_package.zip

    在“maven_package.zip”这个压缩包中,包含了从开发版到测试版再到生产环境的整个项目流程,这充分体现了Maven在软件开发过程中的重要作用。下面我们将详细探讨Maven的核心功能以及如何利用它进行项目打包和管理。 ...

    maven_spring mvc_mina dome

    【标题】"maven_spring mvc_mina dome" 涉及到的是一个整合了Maven、Spring MVC和Mina的示例项目,旨在帮助初学者理解和掌握如何在实际开发中结合这三个技术栈。 【Spring MVC】是Spring框架的一部分,它是一个用于...

    maven_repository.zip

    本篇文章将详细讲解`maven_repository.zip`中的内容以及Maven本地仓库的作用。 ### 1. Maven仓库结构 Maven仓库分为以下三个层次: - **远程仓库 (Remote Repository)**:这是Maven官方或者第三方提供的存储库,...

    pom配置文件 maven_repository.rar

    1. **解压文件**:首先,你需要将`maven_repository.rar`解压缩到一个本地目录,例如`C:\maven_repo`。 2. **配置本地仓库**:然后,打开你的Maven配置文件`settings.xml`(一般位于`%USER_HOME%\apache-maven-3.x....

    SpringMvc_Maven.zip_java项目_maven_maven springmvc_springmvc maven

    在本项目 "SpringMvc_Maven.zip" 中,我们将看到如何在一个 Maven 项目中配置并使用 Spring MVC。 首先,我们来详细讨论 Maven。Maven 是一个项目管理和综合工具,它通过提供一个标准化的项目对象模型(Project ...

    PyPI 官网下载 | pulp_maven_client-0.1.0b31578777196-py3-none-any.whl

    标题中的"PyPI 官网下载 | pulp_maven_client-0.1.0b31578777196-py3-none-any.whl"表明这是一个从Python Package Index (PyPI)官方源下载的软件包,名为`pulp_maven_client`,版本号为`0.1.0b31578777196`,适用于...

    基于Bootstrap的Java企业通用开发平台框架_maven_hibernate

    基于Bootstrap的Java企业通用开发平台框架_maven_hibernate,基于Bootstrap的Java企业通用开发平台框架_maven_hibernate,基于Bootstrap的Java企业通用开发平台框架_maven_hibernate

    Maven_Example_C

    【标题】"Maven_Example_C" 涉及的是使用Maven这一构建工具在C语言项目中的应用示例。Maven是Java开发中的主流构建工具,但它也能够管理其他语言的项目,包括C和C++。这个压缩包可能包含了详细讲解如何在C语言项目中...

    jeesite_maven_repository.rar

    标题中的"jeesite_maven_repository.rar"是一个压缩包,包含了Jeesite 1.2.7版本在使用Maven构建时所需的本地仓库JAR包。这个压缩包的主要作用是在开发环境中快速建立Jeesite项目的依赖环境,避免开发者逐个下载大量...

Global site tag (gtag.js) - Google Analytics