首页 > 其他分享 >Maven_Scope取值的含义

Maven_Scope取值的含义

时间:2023-04-14 11:34:06浏览次数:34  
标签:provided 依赖 Maven 编译 API Scope 取值 范围

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 仓库中引用依赖)

标签:provided,依赖,Maven,编译,API,Scope,取值,范围
From: https://blog.51cto.com/u_16070335/6189769

相关文章

  • Maven_How To Add Oracle JDBC Driver In Your Maven Local Repository
    via: http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/ DuetoOraclelicenserestriction,thereisNOpublicMavenrepositoryprovidesOracleJDBCdriver.TouseOraclejdbcdrivewithMaven,youhavetoinstallit......
  • Maven_中文编码问题
    [WARNING]Usingplatformencoding(GBKactually)tocopyfilteredresources,i.e.buildisplatformdependent!解决方案pom文件中增加<plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-resources-plugin&......
  • Maven工程开发
    Maven工程开发编写pom.xml配置文件<properties></properties>定义项目的基本信息groupId反向域名,定义项目组名artifactId小写字母,定义项目名version定义版本名,三段:第一段革命性的产品升级,第二段新功能版本,第三段修正一些bugpackaging定义打包方式<dependenci......
  • Maven
    Maven介绍ApacheMavenProjectMaven简介项目管理工具,构建工程,管理jar包,编写代码,完成测试,项目打包Maven工具是基于POM(ProjectObjectModel,项目对象模型)实现的。在Maven的管理下每个项目都相当于是一个对象。Maven标准化了项目的构建。即对项目结构,构建命令等进行了标准化......
  • 在idea运行maven项目 将mybatis的接口与接口对应xml文件放在同一个包下,启动时无法找到
    在项目的在pom文件中引入如下<resources><resource><directory>src/main/java</directory><excludes><exclude>**/*.java</exclude></excludes></resource>......
  • Maven
    1.Maven简介官方的解释:Maven是一个项目管理工具,它包含了一个项目对象模型(ProjectObjectModel),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(DependencyManagementSystem),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你......
  • IDEA Java项目中Maven Lifecycle功能
    功能点clean用于清除之前构建生成的所有文件,具体为清除Target目录中的所有文件,包括该目录删除了install生成的所有文件。validate用于验证项目是否正确,并且说必要的信息是否都可用。compile编译项目的源代码,主要是Java文件。test编译和运行测试代码。p......
  • sqlalchemy快速插入数据,scoped_session线程安全,加载类上的装饰器,基本增删改查,django中
    今日内容sqlalchemy快速插入数据sqlalchemy是什么orm框架,跟其他web框架没有必然联系,可以独立使用安装,快速使用,执行原生sql创建表和删除表不能创建数据库不能修改字段(增加,删除)使用orm插入第一步:生成engine对象engine=create_engine("mysql+pymysql://[email protected].......
  • idea配置maven
    1)选择File-->Settings(配置当前的项目)选择File-->OtherSettings(配置以后新创建的项目) 2)   选择Build,Execution,Deployment-->BuildTools-->Maven    3)  配置以下三项信息:Maven的主目录,配置文件settings.xml和本地仓库repository目录  4)......
  • flask框架06 sqlalchemy使用 scoped_session线程安全 一对多 多对多 增删改查
    今日内容详细目录今日内容详细1sqlalchemy快速插入数据2scoped_session线程安全2.1基本使用2.2加在类上的装饰器3基本增删查改3.1基本增删查改和高级查询3.2原生sql3.3django中执行原生sql4一对多4.1表模型4.2新增和基于对象的查询5多对多5.1表模型5.2增加和基于......