如何知道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”
找到
<tomcat.version>
行,例如:<tomcat.version>9.0.27</tomcat.version>
【讨论】:
【参考方案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