##很多时候,我们新建一个Maven工程,第一步都是添加依赖,可是其中的scope代表了什么呢?

maven工程中scope详解:



  Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了。

一,scope的分类
  ~1,compile
  默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

  ~2,test
  scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。

  ~3,runntime
  runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSR×××的实现,对应的API jar是compile的,具体实现是runtime的,compile只需要知道接口就足够了。oracle jdbc驱动架包就是一个很好的例子,一般scope为runntime。另外runntime的依赖通常和optional搭配使用,optional为true。我可以用A实现,也可以用B实现。

  ~4,provided
  provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。

  ~5,system
  从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。

  ~6,scope的依赖传递
  A–>B–>C。当前项目为A,A依赖于B,B依赖于C。知道B在A项目中的scope,那么怎么知道C在A中的scope呢?答案是: 
当C是test或者provided时,C直接被丢弃,A不依赖C; 
否则A依赖C,C的scope继承于B的scope。



##很多时候,我们新建一个Maven工程,第一步都是添加依赖,可是其中的scope代表了什么呢?

原文地址:https://www.cnblogs.com/liurui-bk517/p/11357198.html

时间: 2024-11-10 07:03:33

##很多时候,我们新建一个Maven工程,第一步都是添加依赖,可是其中的scope代表了什么呢?的相关文章

新建一个maven工程

软件151  徐中飞 使用spring boot新建maven工程不在需要建立maven web工程,只要一般的maven工程就好了. 二.maven包的导入 清单如下: <!-- Inherit defaults from Spring Boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</

1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project

 使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-XX:MaxPermSize=768m-Xms1024m-Xmx3072m搜索 二:修改window->preferences --- > JAVA->Edittor->Hovers,将右侧所有复选框清空. 2.因为eclipse上一次未正常关闭,导致启动卡死,错误日志为: [plain

如何建立一个maven工程导入myeclipse

(2013-01-06 12:17:50) 转载▼ 标签: 杂谈 分类: maven 本人的myeclipse8.5直接创建标准的工程不成功,就在网上找资料查查后,搞定了总结了这份资料,方便以后更好的解决更多关于用myeclipse8.5来创建一个标准的maven工程. [1]第一步:下载一个免安装版的apache-maven-3.0.3.zip解压后,配置环境变量 新建M2_HOME: 在path后面添加  %M2_HOME%\bin; [2]第二步:编译检查环境是否配置正确;  mvn -v

2.Maven特点,Maven约定,新建一个Maven项目

 1 Maven是跨平台的项目管理工具.主要服务于基于java平台的项目构建,依赖管理和项目信息管理. 项目构建 清理à编译à测试à报告à打包à部署 理想的项目构建: 高度自动化 跨平台 可重用的组件 标准化的 依赖管理 工程的jar包的管理 要进行依赖管理的原因 自动下载 统一依赖管理 项目信息管理(包括) 项目名称描述等 开发人员信息 开发者信息等 2 Maven的特点 A 拥有约定,知道你的代码在哪里,放到哪里去 B 拥有一个生命周期,例如执行mvn install就可以自动执行编译,

Eclipse中一个Maven工程的目录结构

在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织的这种问题,跟不要说自己试试怎么控制了. 但是最近在学习Maven的时候知道了它对工程的目录结构有要求,也就是所谓的"惯例优于配置".有一个被绝大多数人认可的java工程的目录结构被确定下来.这样统一了市面上各种复杂配置的工程.于是我便重新开始查资料,看看别人到底如何安排一个优秀的工程框架的. 首先,一个默认的E

IntelliJ IDEA 2016 2.5 安装 并使用其新建一个maven web项目部署发布

1.近来在家码代码,发现myeclipse建maven管理的项目时非常卡,时不时就update,myeclipse真的是忍了好久了,太卡了, 我的主机都是i5 6500的处理器,内存八G,还ka,,,myeclipse我真的不能再爱你了 2.强烈推荐一款java ee开发工具,intelliJ idea,不说别的就单单建maven项目不卡这一点就强烈推荐: 3.下载地址如下https://www.jetbrains.com/idea/download/#section=windows:选择uti

Intellij IDEA新建一个EJB工程(二)

从博文:http://www.cnblogs.com/yangyquin/p/5328344.html 中可以知道如何利用Intellij IDEA建立一个EJB Module,还有新建一个测试Module. 但是我发现新建的EJB项目可以优化一下,在EJB Module里面建立一个JSP文件,用来调用EJB项目. 1.在Intellij IDEA新建一个EJB工程(一)中新建的EJB项目是包含web应用的,所以先优化一下项目结构, 主要将META-INF统一到web目录下,而lib文件夹放在W

1. 如何新建一个ARM工程

学习stm32,第一步就是选择开发工具了,GCC,MDK,IAR每一种都有自己的优劣势,不再赘述.在这里,我选择使用的时MDK5.14.首次使用MDK,如果有开发板,那么例程就提供了了很多的模板供我们学习.但是我发现直接使用这些模板虽然让我快速的实现功能,是很有趣,但是解析代码时却让我感觉迷茫,我甚至不知道程序的运行流程,也不知道为什么如此设计,因此我就有了脱离例程,自己建立工程的想法,初次建立错误一堆,通过百度以及自己查找解决这一个个错误花费了我接近4个小时,我把自己的整个经历记录下来,虽然以

Android中使用自身携带的Junit新建一个测试工程

1.新建立一个Android工程 package com.shellway.junit; public class Service { public int divide(int a,int b){ return a/b; } } Service.java.作为被测试类 package com.shellway.junit; import junit.framework.Assert; import android.test.AndroidTestCase; public class TestT