【问题标题】:Maven dependency pickup in springbootSpring Boot 中的 Maven 依赖项拾取
【发布时间】:2019-06-08 04:42:14
【问题描述】:

我已经声明了这两个依赖项

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-tomcat</artifactId>   
     <scope>provided</scope> 
</dependency>

和:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

spring-boot-starter-web 已经有带有嵌入式 tomcat 核心的 spring-boot-starter-tomcat。如图https://stackoverflow.com/a/33419889/1171533

我的问题是当我的项目构建和运行时,选择运行spring-boot-starter-tomcat 的哪个实现?我怎样才能找到正在使用的那个?

【问题讨论】:

    标签: java maven spring-boot


    【解决方案1】:

    运行mvn dependency:tree

    寻找这一行:

    ...
    [INFO] +- org.springframework.boot:spring-boot-starter-tomcat:jar:<version>:provided
    ...
    

    如果你删除

    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>   
         <scope>provided</scope> 
    </dependency>
    

    之前的输出行应该消失了,而是添加了:

    ...
    [INFO] \- org.springframework.boot:spring-boot-starter-web:jar:<version>:compile
    [INFO]    +- org.springframework.boot:spring-boot-starter:jar:<version>:compile
    ...
    

    【讨论】:

    • 这是一个很好的答案。您还可以在 Eclipse 中打开 pom.xml 的不同选项卡来探索这一点,当您有冲突的声明时,您将准确地看到哪个版本优先于哪个版本。在您的示例中,您两次声明了相同的版本(来自 Spring Boot 父级的隐式版本),因此没有冲突。
    【解决方案2】:

    基于一个类实例,你可以找到包含该类的jar的各种信息。

    yourInstance.getClass().getPackage().getImplementationVersion()
    

    【讨论】:

      【解决方案3】:

      如果你在依赖项下使用@RestController(意味着创建restful服务),你可以使用

          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
      

      如果你使用 theamleaf ,jsp(你想将应用程序部署为war)你需要包含以下依赖项

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
          <scope>provided</scope>
      </dependency>
      

      【讨论】:

        猜你喜欢
        • 2021-11-18
        • 1970-01-01
        • 2021-05-15
        • 2019-07-24
        • 1970-01-01
        • 1970-01-01
        • 2019-07-16
        • 2021-07-24
        • 2016-07-16
        相关资源
        最近更新 更多