IntelliJ IDEA中Maven项目关于Provided级别依赖的启动问题
目录
概述
在IntelliJ IDEA
中使用Maven
项目时,遇到个问题如下:
问题分析
看到这个东西,下意识的认为pom.xml
中缺少了slf4j相关的配置,遂查看之,又是存在的:
|
|
有些纳闷,其实项目是能够正常编译的,但是为什么Run不了呢?其实上面贴出来的<scope>provided</scope>
就已经告诉我们问题了,先看下 scope 相关的定义:
- compile:编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。
- test: 测试依赖范围,只针对单元测试;
- provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时候无效。
很明显的问题了,IDEA会严格遵守Maven的约定,在运行时不会加载provided级别的包,以前使用Eclipse时是可以直接运行的(Eclipse默认加载,方便了开发者,但是违反了Maven规范,这是好事还是坏事呢?我们就不深究了,反正以后也不会用了,哈哈)
解决方案
- 调整 scope 级别为[
compile
] (不推荐,这个要斟酌一下,会导致依赖传递问题,如果是刻意设置的provided,那就得不偿失了) - 调整 IDEA [
Run/Debug Configurations
] Include dependencies with ‘Provided’ scope :
如此就能正常运行了,可见IDEA还是非常人性化的。
评论