Java SpringBootMaven提供的作用域包括在WAR中,但不包括IDE运行时

Java SpringBootMaven提供的作用域包括在WAR中,但不包括IDE运行时,java,spring,maven,intellij-idea,spring-boot,Java,Spring,Maven,Intellij Idea,Spring Boot,我花了一个周末的时间试图弄明白为什么一个简单的springboot项目可以在命令行中运行,但不是通过我的intellij15.0.2ide实现的,最后将它缩小到以下范围: 我正在使用嵌入式Tomcat 默认依赖项如下所示: <dependencies> ... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b

我花了一个周末的时间试图弄明白为什么一个简单的
springboot
项目可以在命令行中运行,但不是通过我的
intellij15.0.2ide
实现的,最后将它缩小到以下范围:

  • 我正在使用嵌入式Tomcat
  • 默认依赖项如下所示:

    <dependencies>
      ...
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
      </dependency>
    </dependencies>
    
    
    ...
    org.springframework.boot
    
  • IntelliJ从运行时类路径中排除提供的
    范围
    
  • 因此,命令行构建的WAR文件包含为嵌入式Tomcat提供的作用域JAR,但通过IntelliJ IDEA运行的实例不包含

    以前有人见过这个吗

    解决这一问题的最佳方法是什么


    我可以将
    范围
    更改为
    编译
    ,但这感觉像是一次黑客攻击。这是唯一的解决办法吗?

    我也有同样的问题。我修正了我的评论范围

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <!--<scope>provided</scope>-->
    </dependency>
    
    
    org.apache.tomcat.embed
    汤姆卡特·贾斯珀
    
    如果要从命令行运行,为什么还要提供依赖项?只有当您打算创建一个war文件以便在服务器上部署时,才应该提供它们,如果您想从命令行运行它,则应该提供它们(Spring引导插件将它们移动到jar/war中的一个单独目录中,以便从命令行运行时,jar仍然可用).@M.Deinum我的目的是最终在服务器上独立部署WAR文件,从而提供范围。正如您所说,它确实运行命令行,因为SpringBoot插件将它们放在一个单独的目录中。但是,我的IDE(IntelliJ)看不到提供的范围依赖项。试图找出一种在我编写代码时通过IDE进行调试的方法,并以尽可能干净的方式进行。您是否在Intellij中启用了Spring引导功能?可能重复