Maven中pom.xml的scope

一、compile:编译范围
compile是默认的范围;如果没有提供一个范围,编译范围依赖在所有的classpath 中可用,同时它们也会被打包。而且这些dependency会传递到依赖的项目中。

 

二、provided:已提供范围
provided 明了dependency 由JDK或者容器提供。例如如果开发了一个web 应用,可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这Servlet API JAR 由你的应用服务器或者servlet容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的也不会被打包。
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>

 

三、runtime:运行时范围
runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。

 

四、test:测试范围
test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

 

五、system:系统范围
system范围依赖与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven 也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个 systemPath 元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven 仓库中引用依赖)。

 

原帖地址
http://drizzlewalk.blog.51cto.com/2203401/665590/
http://blog.csdn.net/daihui05/article/details/7476976

时间: 2024-08-06 15:40:58

Maven中pom.xml的scope的相关文章

gradle项目转换成maven的pom.xml文件

gradle项目转换成maven的pom.xml文件 这是我build.gradle的文件: buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE") } } apply plugin: 'java' apply plugin: 'jacoco' apply plugi

创建Maven项目 pom.xml文件报错

问题描述 创建Maven项目 pom.xml文件报错 创建maven项目 pom.xml文件提示错误: Failure to transfer org.apache.maven.surefire:surefire:pom:2.10 from http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update inter

git-关于版本的问题,如maven的pom.xml报错,你如果判断是版本问题导致的。

问题描述 关于版本的问题,如maven的pom.xml报错,你如果判断是版本问题导致的. 1:我觉得版本就是类似于svn和cvs,git那种版本记录的工具,可以记录每次项目的代码更改,但是今天我遇到一个问题,我的项目报错,我居然想不到是可能是版本导致的,是不是我对版本的理解还有待提高. 解决方案 算你运气好,我手里面的项目 都是 maven 管理.如果 pom 报错,首先你要看 是哪里报错, 一般的 IDE 都会有提示 信息的. 关于版本问题,给你个建议,把所有的版本都放 到一个 parent

【maven】 pom.xml详解

pom.xml详解 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">

【maven】pom.xml报错:Cannot detect Web Project version.

新建的maven项目 报错如下: 1 Cannot detect Web Project version. Please specify version of Web Project through <version> configuration property of war plugin. E.g.: <plugin> <artifactId>maven- 2 war-plugin</artifactId> <configuration> &

【maven】pom.xml文件没错,但是项目有小红叉,Problems中可以看到错误:“Dynamic Web Module 3.0 requires Java 1.6 or newer.”

  解决方法: 1.将 1 <plugin> 2 <groupId>org.apache.maven.plugins</groupId> 3 <artifactId>maven-compiler-plugin</artifactId> 4 <version>2.3.2</version> 5 <configuration> 6 <source>1.8</source> 7 <tar

【maven】 pom.xml内容没有错,但一直报错红叉 解决办法

1.首先看一下下面的这两个项目,一个是新建的,一个是原来的老项目 2.myEcplise中是点击如下图 Maven4MyEcplise, Ecplise中也是右键,只不过点击Mavene而已,两个一样 3. 强制更新Maven 4.一会 红叉就消失了

Maven 中的pom.xml文件

Maven中的Pom.xml文件解析 项目管理利器(Maven)--Pom.xml解析 <name>项目的描述名</name> <url>项目的地址</url> <description>项目描述</description> <developers>开发人员信息</developers> <licenses>许可证信息</licenses> <!-- 依赖列表 --> <

maven jar pom xml-在maven的pom.xml中添加&amp;amp;lt;dependency&amp;amp;gt;直接可以下载jar包吗

问题描述 在maven的pom.xml中添加<dependency>直接可以下载jar包吗 如题,我eclipse中下载了m2eclipse插件,新建了一个maven项目,然后再pom.xml中添加了 再运行什么命令可以下载jar包呢?求大神解答啊. 解决方案 就是这个依赖. 解决方案二: jar包是自动下载的,一般你在eclipse中添加了依赖然后保存后,maven会自动下载jar包的,如果是要用maven进行项目部署,可以看我的这篇文章哈:使用Maven自动部署Java Web项目到Tom