重点:这个项目打成war包时,scope=provided的jar包,不会出现在WEB-INFO/lib目录下,而scope=compile的jar包,会放到WEB-INFO/lib目录

scope=compile(默认)

​ 对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个jar包在classpath中。

​ 当我们用maven install生成最终的构件包ProjectABC.war后,在其下的WEB-INF/lib中,会包含我们被标注为scope=compile的构件的jar包,而不会包含我们被标注为scope=provided的构件的jar包。这也避免了此类构件当部署到目标容器后产生包依赖冲突。

scope=provided

​ scope=provided的情况,则可以认为这个provided是目标容器已经provide这个jar。换句话说,它只影响到编译,测试阶段。在编译测试阶段,我们需要这个app对应的jar包在classpath中,而在运行阶段,假定目标的容器(比如我们这里的tomcat容器)已经提供了这个jar包,所以无需我们打包对应的jar包了。在运行阶段,app可以直接使用容器提供的jar。

scope的其他参数如下:

  1. compile

    ​ 默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布

  2. provided

    ​ 跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。

  3. runtime

    ​ 表示dependency不作用在编译时,但会作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。

  4. test

    ​ 表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不会随项目发布。

  5. system

    ​ 跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。

最新文章

  1. jquery版滑块导航栏
  2. AIR ANE(本机扩展)使用中的一些问题(Android平台)
  3. Spot光照资料
  4. Karel运行环境配置
  5. cdoj 04 Complete Building the Houses 暴力
  6. asterisk 语音文件转换
  7. SetupFactory +添加frm2.0工具
  8. ElasticSearch 一
  9. Hello2实例的分析
  10. koa/redux middleware 深入解析
  11. GO格式化打印
  12. java代码示例(4)
  13. 生产环境中tomcat的配置
  14. HDU 3183 - A Magic Lamp - [RMQ][ST算法]
  15. So you want to be a computational biologist?
  16. JavaScript 是如何工作的: 事件循环和异步编程的崛起 + 5个如何更好的使用 async/await 编码的技巧 - 学习笔记
  17. SQL 用到的操作符
  18. hdu6365 2018 Multi-University Training Contest 6 1004 Shoot Game
  19. main函数的参数argc和argv
  20. nodejs(二)child_process模块

热门文章

  1. C# 监控网速
  2. JavaScript高级程序编程(三)
  3. Zotero使用教程(2)-数据备份
  4. 洛谷P2744 量取牛奶
  5. java学习笔记(5) 控制语句、键盘输入
  6. mysql cos() 函数
  7. 百度地图中如何获取到发布的SHA1
  8. React_02_ECMAScript6
  9. rsync实时同步
  10. 理解Web路由(浅谈前后端路由与前后端渲染)