如何知道spring boot中嵌入了哪个tomcat版本

Posted

技术标签:

【中文标题】如何知道spring boot中嵌入了哪个tomcat版本【英文标题】:How to know which tomcat version embedded in spring boot 【发布时间】:2016-05-06 23:23:54 【问题描述】:

我在项目中使用了弹簧靴。它有内置的tomcat服务器。我找到了一个罐子spring-boot-starter-tomcat-1.2.5.RELEASE.jar。我需要在linux服务器上做一些tomcat相关的配置。

我怎样才能知道其中使用了哪个tomcat版本?

【问题讨论】:

【参考方案1】:

您还可以通过查看有效的 pom.不离开 IDE 来检查版本。

例如,如果您使用的是 IntelliJ,则可以通过右键单击 pom.xml > Maven > Show effective POM 来查看有效的 pom。

...或从命令行发出mvn help:effective-pom

【讨论】:

【参考方案2】:

通过http://search.maven.org/,在https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/1.2.5.RELEASE/spring-boot-dependencies-1.2.5.RELEASE.pom:

<tomcat.version>8.0.23</tomcat.version>

【讨论】:

啊,但如果我没记错的话,这仅在您使用 Spring 父 POM 时才有效。如果您按照docs.spring.io/spring-boot/docs/current/reference/html/… 通过导入的依赖管理来引入依赖怎么办?【参考方案3】:

或对于 Gradle,使用

通过控制台打印依赖关系树
./gradlew dependencies

输出中的示例 sn-p:

...
|    +--- org.springframework.boot:spring-boot-starter-tomcat:2.1.0.RELEASE
|    |    +--- javax.annotation:javax.annotation-api:1.3.2
|    |    +--- org.apache.tomcat.embed:tomcat-embed-core:9.0.12
|    |    +--- org.apache.tomcat.embed:tomcat-embed-el:9.0.12
|    |    \--- org.apache.tomcat.embed:tomcat-embed-websocket:9.0.12
|    |         \--- org.apache.tomcat.embed:tomcat-embed-core:9.0.12
...

在我上面的例子中是tomcat版本9.0.12

【讨论】:

【参考方案4】:

你可以看http://mvnrepository.com/

http://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-tomcat/1.2.5.RELEASE

下面有Compile Dependencies 部分,您可以看到它使用Tomcat 8.0.23

【讨论】:

谢谢。如果我在 linux 中搜索 where tomcat 找不到结果。为什么? 你的意思是tomcat在哪里,对吧? Spring Boot 中嵌入的 tomcat 并不是作为应用程序部署在操作系统中的独立 tomcat。它只是一个在 pom.xml 中作为依赖项添加的 jar。 whereis 在文件系统中的一些流行位置($PATH、man 路径、源文件夹)中查找文件,而不是 ~/.m2/repository 中的 jars。【参考方案5】:

可以在依赖树中查看所有依赖的版本。

为此:

进入pom.xml目录

运行以下命令:

$ mvn 依赖:树

[INFO] Scanning for projects...
enter code here

[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Project Name
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ spring-mvc-logback ---
[INFO] com.sj.common:spring-mvc-logback:war:1.0-SNAPSHOT
[INFO] +- org.springframework:spring-core:jar:4.1.6.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:4.1.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-beans:jar:4.1.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:4.1.6.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-aop:jar:4.1.6.RELEASE:compile
[INFO] |  |     \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- org.springframework:spring-expression:jar:4.1.6.RELEASE:compile
[INFO] |  \- org.springframework:spring-web:jar:4.1.6.RELEASE:compile
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.12:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.12:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.1.3:compile
[INFO] |  \- ch.qos.logback:logback-core:jar:1.1.3:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.937 s
[INFO] Finished at: 2015-06-19T19:17:54+08:00
[INFO] Final Memory: 13M/308M
[INFO] ------------------------------------------------------------------------

您将能够查看与该依赖项关联的所有依赖项和版本。

【讨论】:

【参考方案6】:

在 Eclipse IDE 中:

    打开你的 pom.xml 转到“有效 POM”标签 搜索“tomcat” 找到&lt;tomcat.version&gt;行,例如:&lt;tomcat.version&gt;9.0.27&lt;/tomcat.version&gt;

【讨论】:

【参考方案7】:

对于那些使用 PCF 即 cloudfoundry 的人

我通常保持提供的 spring boot tomcat 依赖 这意味着我本地的 tomcat 版本可能会略有不同。

java buildpack 包含 tomcat 版本

https://github.com/cloudfoundry/java-buildpack/releases

例如java buildpack 4.19.1 自带 Openjdk 1.8.0_212 和 tomcat 9.0.19

【讨论】:

【参考方案8】:

考虑您项目的pom.xml 的以下 sn-p,其中默认父级是 spring-boot-starter-parent

你的项目 pom.xml

<!--Spring boot parent project -->
<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.4.5</version>
 <relativePath /> <!-- lookup parent from repository -->
</parent>

接下来查找 spring-boot-starter-parent 项目的 pom.xml 以查看依赖项,它以 spring-boot-dependencies 作为其父项。如果使用 IntelliJ/Vscode 等现代 IDE 可以轻松地在 IDE 中遍历。

spring-boot-starter-parent pom.xml

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.4.5</version>
</parent>

再上一层,即到spring-boot-dependencies,它还没有父级,在属性下列出了所有默认值。下面的示例 sn-p 包含仅显示 tomcat 的非详尽列表。

spring-boot-dependencies pom.xml

<properties>
  <!-- Other dependencies -->
  <tomcat.version>9.0.45</tomcat.version>
  <!-- Other dependencies -->
</properties>

这样,我们可以立即搜索所有默认值。

【讨论】:

【参考方案9】:

通过控制台打印依赖关系树

mvn dependency:tree

【讨论】:

这和上面的另一个答案是一样的,一年半前发布的。

以上是关于如何知道spring boot中嵌入了哪个tomcat版本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CommandLineJobRunner 调用嵌入在 Spring Boot 应用程序中的 Spring Batch 作业

如何在嵌入式 Spring Boot Keycloak 中设置主题?

如何使用 Spring Boot 和嵌入式 Tomcat 配置此属性?

如何在 spring-boot 中拦截嵌入式 Tomcat 上的“全局”404

如何避免使用 Spring-Boot 下载嵌入式 MongoDb

如何在带有嵌入式 tomcat 的 Spring Boot 应用程序中运行 hawt.io