我是靠谱客的博主 尊敬草丛,最近开发中收集的这篇文章主要介绍Maven的5种scope(加上optional 6种),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

1. Maven Scope provided 和 optional 的区别

它们的传递性是一样的,都不会传递。

唯一区别在于,例如 一个 war项目,provided的jar 不会被打进war包,而 optional 的jar 会打进war包。

从概念上、本质上来说:

  • provided的包是确实必须要的(如果第三方用到它,则需要第三方提供,如果没有,就会出错)

  • 而optional的本意是,这个包是可选的(无论有没有,都不会出错)

 

2. Maven的5种scope对于3种class有否有效

   scope       classcompileruntimetestexample
compileYYYspring-core
runtime-YYjdbc驱动
providedY-Yservlet-api
systemY-Y本地jar包
test--Yjunit

从中可以看出:

1、provided和system范围scope是一样的,只是system的文件来自本地jar包,而provided的来自maven仓库。

2、所有scope的都能在test-class下使用

3、compile 和 runtime 的典型区别案例就是jdbc驱动,jdbc驱动编译时不需要,但是运行时需要。

 

另外,Eclipse和Idea两种IDE对于maven scope的运用不一样:

    例如 main/src下面有个java程序的Main方法,eclipse直接按F11运行,所有scope的jar包都可以依赖到,但是idea下面只有compile和runtime的jar包能用,其他provided、system和test的jar包都会报错——找不到class。

    具体参见这篇文章:《Idea下运行找不到class、找不到jar包》

 

最后

以上就是尊敬草丛为你收集整理的Maven的5种scope(加上optional 6种)的全部内容,希望文章能够帮你解决Maven的5种scope(加上optional 6种)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部