springboot嵌入式tomcat和tomcat-embed-jasper
我有时会在pom.xml中看到以下声明……
org.springframework.boot spring-boot-starter-web javax.servlet jstl org.apache.tomcat.embed tomcat-embed-jasper provided ....
如您所见,spring-boot-starter-web被声明为tomcat-embed-jasper。
是不是spring-boot-starter-web已经有嵌入式tomcat? 为什么有些开发人员仍然使用boot-starter-web声明tomcat-embed-jasper? 或者有什么理由吗?
正如你所说, 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嵌入式依赖项,但它不包含jasper嵌入式依赖项,因此应该是单独声明它的原因。
另外,请记住,使用Spring IO Platform作为父级,您可以轻松地管理依赖项。 要了解更多相关信息,您可以阅读我的post
希望能帮助到你,
从jcgarcia的答案扩展而来。
即使是提供,但是当你构建为战争时,spring-boot-maven-plugin将包含两个jar:ecj-3.12.3.jar tomcat-embed-jasper-8.5.23.jar