我有时会在pom.xml中看到以下声明...
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
....
正如您所看到的,spring-boot-starter-web与tomcat-embed-碧玉一样被声明。
spring-boot-starter-web不是已经有了一个嵌入式tomcat吗?为什么有些开发人员仍然在boot-starter-web的沿着声明tomcat-embed-碧玉?或者有什么原因吗?
3条答案
按热度按时间bnl4lu3b1#
正如您所说,
spring-boot-starter-web
包含spring-boot-starter-tomcat
。您可以在此处查看它spring-boot-starter-tomcat
包含tomcat-embed-core
。您可以在此处查看但是,似乎
tomcat-embed-core
不包含tomcat-embed-jasper
。实际上,tomcat-embed-jasper
包含与tomcat-embed-core
的依赖关系。请在此处查看无论如何,
tomcat-embed-jasper
被标记为provided
,因此表示您希望JDK或容器在运行时提供依赖关系。此作用域仅在编译和测试类路径上可用,并且不可传递。总之,
spring-boot-starter-web
包含tomcat嵌入式依赖项,但不包含碧玉嵌入式依赖项,因此应该单独声明它。此外,请记住,使用SpringIOPlatform作为父平台,您可以轻松地管理依赖项。
希望能有所帮助,
qhhrdooz2#
引申自贾嘉的回答。
即使它是提供的,但当你构建成战争时,spring-boot-maven-plugin会多包括两个jar:Ruby
dluptydi3#
对于那些在2022年Java版本17、Maven版本3.0.0和Package Jar仍然面临这个错误的人,我刚才也遇到了同样的问题,看起来即使我们设置了
<scope>Provided</scope>
,Maven也没有拾取jar。你可以做的是在添加依赖项时完全删除它,然后再次运行Maven安装依赖项。它肯定会修复它。因此,您的pom.xml文件将显示为:起始日期
结束日期