maven 中scope 的应用

maven 中scope 定义了这个包的应用范围,根据场景不同某些jar的应用也不同,scope 有5种类型;

以下内容是转帖复制:

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

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

javax.servlet.jsp
jsp-api
2.1
provided

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

四、test:测试范围
test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。

junit
junit
4.11
test

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

时间: 2024-11-10 14:51:43

maven 中scope 的应用的相关文章

7.maven配置文件中<scope>的6种配置属性解释(源自官方文档) -- 依赖的范围

7.maven配置文件中<scope>的6中配置属性解释 说明:我们知道在pom.xml中<scope>标签是设置依赖作用域的,那么具体的设置类型有哪几种,分别作用的什么时候呢? Dependency Scope Dependency scope is used to limit the transitivity of a dependency, and also to affect the classpath used for various build tasks. There

maven中依懒scope说明

compile (编译范围) compile是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范围.编译范围依赖在所有的classpath 中可用,同时它们也会被打包. provided (已提供范围) provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用.例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API:这个Servl

在 eclipse中 创建 web 版的 maven 工程以及 进一步了解 pom.xml 中 scope 的相关配置设置问题

1.在 eclipse中 创建 web 版的 maven 工程: a.和 创建 java 版的 maven 工程一样,先选中一个简单的工程(跳过经典模式),后填写坐标(不了解的看先前的博文),在打包方式中选择 war 包,后点击 finish. b.可以看到,在新建 的 javaproject03 的 项目中,只有 webapp目录,而实际的内容并没有.这里我们在每次新建时都要做设置.设置如下: 注:鼠标停在所建的项目上,点击右键进入 properties --> Project Facets

maven依赖 dependency中scope=compile 和 provided区别

问题再现 上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是provided的情况,比如如下: <dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-impl</artifactId> <version>6.1.0</version> <scope>provided</scope&

Maven中依赖的scope的依赖范围

在Maven中依赖的域有这几个:import.provided.runtime.compile.system.test 1compile 的范围 当依赖的scope为compile的时候,那么当前这个依赖的包,会在编译的时候将这个依赖加入进来,并且在打包(mvn package)的时候也会将这个依赖加入进去 意思就是:编译范围有效,在编译与打包时都会存储进去 2provided的范围 当依赖的scope为provided的时候,在编译和测试的时候有效,在执行(mvn package)进行打包成w

maven中pom.xml引入jar包小结

用maven中的pom.xml引入包非常方便,在这我就记录一下我经常用的几个设置,配完pom.xml后只需reimport即可(不断更新中): junit: 用于测试 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> <

Maven中的核心概念

我们最能感受到的Maven的好处应该是它的"自动化构建"与"管理依赖关系"两大功能,下面就看围绕这两大功能的Maven中的核心概念. 1.    项目目录 Maven 使用约定优于配置的原则 .它要求在没有定制之前,所有的项目都有如下的主要目录结构: 一个 maven 项目在默认情况下会产生 JAR 文件,另外 ,编译后 的 .classe文件 会放在 ${basedir}/target/classes 下面:JAR文件会放在${basedir}/target 下面

Maven中的继承和聚合

一. 继承和聚合 1. 什么是继承? maven为了消除重复,把很多相同的配置提取出来, 放入一个父项目的pom.xml中 例如:grouptId,version等 2. 什么是聚合? 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 <modules> <module>-</module> </modules> 3. 继承与聚合的关系 继承主要为了消除重复 聚合主要为了快速构建项目 二. 继承聚合配置 1. 聚合配置代码: <mod

maven中打包项目为war包的pom.xml配置

maven中打包成war包的pom.xml配置(1)完整配置:这个是使用servlet的完整配置,其他的类似. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven