maven scope 属性和生命周期
2019独角兽企业重金招聘Python工程师标准>>>
maven的dependency参数
scope的分类
1.compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去
2.test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit
3.runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段
4.provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作
5.system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径
6.import(only available in Maven 2.0.9 or later):这个是maven2.0.9版本后出的属性,import只能在dependencyManagement的中使用,能解决maven单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。
使用import scope解决maven继承(单)问题
scope的依赖传递
A依赖B,B依赖C。当前项目为A,只当B在A项目中的scope,那么c在A中的scope是如何得知呢?
当C是test或者provided时,C直接被丢弃,A不依赖C;(排除传递依赖)
否则A依赖C,C的scope继承与B的scope
Maven的生命周期
clean:有问题,多清理!
package:打成Jar or War包,会自动进行clean+compile
install:将本地工程Jar上传到本地仓库
deploy:上传到私服
关于scope依赖范围
既然,Maven的生命周期存在编译、测试、运行这些过程,那么显然有些依赖只用于测试,比如junit;有些依赖编译用不到,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用的是JDBC接口),而是在运行时用到的;还有些依赖,编译期要用到,而运行期不需要提供,因为有些容器已经提供了,比如servlet-api在tomcat中已经提供了,我们只需要的是编译期提供而已。
compile:默认的scope,运行期有效,需要打入包中。
provided:编译期有效,运行期不需要提供,不会打入包中。
runtime:编译不需要,在运行期有效,需要导入包中。(接口与实现分离)
test:测试需要,不会打入包中。
system:非本地仓库引入、存在系统的某个路径下的jar。(一般不使用)
转载于:https://my.oschina.net/u/3098425/blog/2870317
maven scope 属性和生命周期相关推荐
- maven详解之生命周期与插件
Maven是一个优秀的项目管理工具,它能够帮你管理编译.报告.文档等. Maven的生命周期: maven的生命周期是抽象的,它本身并不做任何的工作.实际的工作都交由"插件"来完成 ...
- Maven(2)--生命周期以及插件目标
maven的生命周期 maven的生命周期是抽象的,它本身并不做任何的工作.实际的工作都交由"插件"来完成.这种思想和设计模式中的模板方式. maven内置的生命周期: maven ...
- Maven补全之生命周期(Lifecycle)
Maven补全之生命周期(Lifecycle) Maven生命周期基础概念 Maven是基于生命周期构建的,一个Maven项目的构建是已经被清晰定义的过程. 对于我们使用Maven构建项目来说,POM ...
- 第9章 maven的插件和生命周期
第9章 maven的插件和生命周期 本章介绍了maven生命周期.插件以及如何配置插件 9.1 生命周期 一般的项目都会经历这几个步骤:编译,测试,打包,部署,有些公司是手动方式,有些是自动化脚本方式 ...
- Maven入门-6-Maven的生命周期和核心命令详细介绍
本篇来介绍Maven的生命周期和前面介绍过几个命令的详细介绍过程.先介绍生命周期,生命周期中不同阶段就包括了一些命令,所以理解了生命周期,再来看看每一个命令的详细使用过程. 1.Maven的生命周期分 ...
- spring— Bean标签scope配置和生命周期配置
scope配置 singleton 默认值,单例的 prototype 多例的 request WEB 项目中,Spring 创建一个 Bean的对象,将对象存入到 request 域中 sessio ...
- maven的仓库、生命周期与插件
一.仓库 统一存储所有Maven项目共享的构建的位置就是仓库. 仓库分为本地仓库和远程仓库.远程仓库又分为中央仓库(中央仓库是Maven核心自带的远程仓库),伺服(另一种特殊的远程仓库,为节省宽带和时 ...
- maven自带clean_Maven生命周期(示例代码)
简单了解 Maven的生命周期就是对所有的构建过程进行抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有的构建步骤. Maven的生命周期是抽象的,即生命 ...
- Vue第四章 过滤器、组件、插槽、props组件属性、生命周期、监听器(内含详细代码解释)
目录 一.过滤器 二.组件 三.插槽 四.props组件属性 五.生命周期 六.监听器 每日一句 一.过滤器 新的配置项 filters: 用于存放过滤器, 配合 {{ value | 过滤器 }} ...
最新文章
- uniapp自定义导航栏样式,自定义导航栏组件使用说明,兼容小程序和H5及各端
- 文巾解题 1556. 千位分隔数
- 频谱分析幅值单位_案例分享丨某水泥厂入窑斗提减速机不对中故障分析及处理...
- 十年架构师详解JVM运行原理
- 【飞秋】Android开发——NDK开发入门
- 搞定ReentrantReadWriteLock 几道小小数学题就够了
- javascript中call和apply的区别
- 怎么看vray渲染进度_3dmax如何渲染光子,为什么会卡光子呢?
- 安装 mysql 数据库_小水谈Mysql数据库---Mysql安装
- 学习Cocos2d的博客 --推荐
- js替换问题replace和replaceAll
- oracle getpy,拼音
- 波的散射,孔金瓯等著三卷本书籍目录
- 软件环境常识 --dev sit uat
- Domoticz添加实时天气信息显示
- 惠普电脑锁屏快捷键怎么设置?
- OSChina 周二乱弹 ——人和人之间的关系用通话时间来表述
- 数字SOC设计之低功耗之线性稳压器(LDO)
- TiDB Server
- 华强北耳机值得买吗?质量怎么样?靠谱吗?深度拆解悦虎二代1562m耳机!