web-dev-qa-db-fra.com

botte à ressort Tomcat et Tomcat-embed-jasper

Je vois parfois ces déclarations suivantes dans 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>
    ....

comme vous pouvez le constater, spring-boot-starter-web a également été déclaréas Tomcat-embed-jasper.

spring-Boot-Starter-Web n'est-il pas déjà doté d'un tomcat intégré? ou y a-t-il une raison?

5
tuty_fruity

Comme vous l'avez dit, le spring-boot-starter-web inclut le spring-boot-starter-Tomcat. Vous pouvez le vérifier ici

Le spring-boot-starter-Tomcat inclut le Tomcat-embed-core. Vous pouvez le vérifier ici

Mais, il semble que Tomcat-embed-core n'inclut pas Tomcat-embed-jasper. En fait, c'est Tomcat-embed-jasper qui inclut la dépendance avec Tomcat-embed-core. Vérifiez-le ici

Quoi qu'il en soit, le Tomcat-embed-jasper est marqué en tant que provided, indique donc que vous attendez du JDK ou d'un conteneur qu'il fournisse la dépendance au moment de l'exécution. Cette portée est uniquement disponible sur le chemin de classe de compilation et de test et n'est pas transitive.

En conclusion, le spring-boot-starter-web inclut la dépendance intégrée Tomcat mais n'inclut pas la dépendance intégrée jasper. Ce doit donc être la raison pour la déclarer séparément.

N'oubliez pas non plus qu'en utilisant Spring IO Platform en tant que parent, vous pouvez facilement gérer les dépendances. Pour en savoir plus à ce sujet vous pourriez lire mon post

J'espère que ça aide,

6
jcgarcia

Étendu de la réponse de jcgarcia.

Même s'il est fourni, mais quand vous construirez comme une guerre, spring-boot-maven-plugin inclura deux autres jar: ecj-3.12.3.jar Tomcat-embed-jasper-8.5.23.jar

0
Surasin Tancharoen