我有时会在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-jasper都被声明了。
spring-boot-starter-web是否已经具有嵌入式tomcat?为什么有些开发人员仍将bootcat-starter-web和tomcat- embed-jasper一起声明?还是有什么原因?
如您所说,spring-boot-starter-web包括spring-boot-starter- tomcat。你可以在这里检查
spring-boot-starter-web
spring-boot-starter- tomcat
在spring-boot-starter-tomcat包括tomcat-embed- core。你可以在这里检查
spring-boot-starter-tomcat
tomcat-embed- core
但是,似乎tomcat-embed-core不包含tomcat-embed-jasper。实际上,是tomcat-embed- jasper谁在包含依赖项tomcat-embed- core。在这里检查
tomcat-embed-core
tomcat-embed-jasper
tomcat-embed- jasper
无论如何,tomcat-embed- jasper标记为provided,因此表明您希望JDK或容器在运行时提供依赖项。该作用域仅在编译和测试类路径上可用,并且不可传递。
provided
总之,spring-boot-starter-web包括tomcat嵌入式依赖关系,但不包括jasper嵌入式依赖关系,因此这应该是分别声明它的原因。
另外,请记住,使用Spring IOPlatform作为父级,您可以轻松管理依赖项。
希望能帮助到你,