maven scope含义的说明

 依赖范围控制哪些依赖在哪些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 仓库中引用依赖)。

时间: 2024-12-06 21:37:19

maven scope含义的说明的相关文章

maven scope和项目发布需要注意的地方

Maven Scope的使用: http://www.cnblogs.com/wangyonghao/p/5976055.html servlet-api和jsp-api等jar包,一般由servlet容器提供,无需在打包到war包中,如果把这些包打包到工程war包中,在tomcat6以上版本会出现冲突无法正常运行程序(版本不符的情况).可以通过配置范围为provided来实现只在编译的classpath中加载和使用,打包的时候不会包含在目标包中的功能. jstl-imp.jar需要随项目一起发

maven scope属性值设置含义

1.枚举各个属性值的含义 compile,缺省值,适用于所有阶段,会打包进项目. provided,类似compile,期望JDK.容器或使用者会提供这个依赖. runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段. test,只在测试时使用,用于编译和运行测试代码.不会随项目发布. system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它. 2.其它类型的属性值都比较容易理解,这里重点比较一下compile和runtime之间

如何使用Maven scope

maven 有6个scope类型,下面简单总结备忘下 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> </dependency> maven官方描述 Dependency Sco

Maven Scope

Dependency Scope 在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署.目前<scope>可以使用5个值: * compile,缺省值,适用于所有阶段,会随着项目一起发布. * provided,类似compile,期望JDK.容器或使用者会提供这个依赖.如servlet.jar. * runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段. * test,只在测试时使用,用于编译和运行测试代码.不会随项目发

maven scope使用和理解

在Maven的依赖管理中,经常会用到依赖的scope设置.这里整理下各种scope的使用场景和说明,以及在使用中的实践心得. scope的使用场景和说明 1.compile 编译范围,默认scope,在工程环境的classpath(编译环境)和打包(如果是WAR包,会包含在WAR包中)时候都有效. 2.provided 容器或JDK已提供范围,表示该依赖包已经由目标容器(如tomcat)和JDK提供,只在编译的classpath中加载和使用,打包的时候不会包含在目标包中.最常见的是j2ee规范相

【Maven】Maven之scope依赖范围

一.理解Maven scope依赖范围的作用 Maven在编译项目主代码的时候需要使用一套classspath.总共有三种classpath,分别对应于Maven编译项目主代码的时候.Maven编译和执行测试的时候.实际运行Maven项目的时候. Compile: 编泽依赖范围.如果没有指定,就会默认使用该依赖范围.使用此依赖范围的Maven依赖,对于编译.测试.运行三种classpath都有效.比如spring-core依赖,在编辑.测试.运行的时候都需要使用该依赖. test: 测试依赖范围

windows + maven + eclipse

一处教程:http://www.yiibai.com/maven/maven_overview.html Maven中央仓库信息速查:http://maven.outofmemory.cn/ Windows安装maven,并配置本地maven的JAR仓储库:     01:安装JDK,并配置: 02:下载Maven:http://maven.apache.org/download.htmll 解压目录文件中; (apache-maven-3.2.5-bin.zip) 03:配置环境变量: MAV

Spring Boot打jar包,排除lombok等scope=provided的依赖

lombok可以使实体更简洁,主要是会在编译.class文件期间,生成get/set方法,还有hash/equals/toString等. 主要是可以让代码更简洁. @Data//生成get/set/toString/hash/equals等 @Accessors(chain = true)//开启链式调用,即H2user user = new H2user().setId(1).setName("https://www.cnblogs.com/tomcatandjerry/").se

Maven安装以及Idea安装

1maven (1)maven介绍 Maven的含义:Maven项目对象模型(POM)project object model,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. (2)用处 Maven的优势: a)自动构建 清理代码:相当于我们运行clean的效果 自动编译:可以为咱们自动完成编译(类似于执行javac生成class文件) 完成测试:实现测试功能,帮咱们完成 生成报告:可以较为方便的实现对项目的管理 打包:普通项目打jar包,web项目打成war包 项目部署