IntelliJ IDEA中Maven项目关于Provided级别依赖的启动问题
本文最后更新于 665 天前,其中的信息可能已经有所发展或是发生改变。

概述

IntelliJ IDEA中使用Maven项目时,遇到个问题如下:

164354_2185734a_955503

问题分析

看到这个东西,下意识的认为pom.xml中缺少了slf4j相关的配置,遂查看之,又是存在的:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version>
    <scope>provided</scope>
</dependency>

有些纳闷,其实项目是能够正常编译的,但是为什么Run不了呢?其实上面贴出来的<scope>provided</scope>就已经告诉我们问题了,先看下 scope 相关的定义:

  • compile:编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。
  • test: 测试依赖范围,只针对单元测试;
  • provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时候无效。

很明显的问题了,IDEA会严格遵守Maven的约定,在运行时不会加载provided级别的包,以前使用Eclipse时是可以直接运行的(Eclipse默认加载,方便了开发者,但是违反了Maven规范,这是好事还是坏事呢?我们就不深究了,反正以后也不会用了,哈哈)

解决方案

  • 调整 scope 级别为[compile] (不推荐,这个要斟酌一下,会导致依赖传递问题,如果是刻意设置的provided,那就得不偿失了)
  • 调整 IDEA [Run/Debug ConfigurationsInclude dependencies with ‘Provided’ scope :

170159_a47692de_955503

如此就能正常运行了,可见IDEA还是非常人性化的。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇