Deepesh Rathore
Deepesh Rathore

Reputation: 351

How to exclude embeded Tomcat in Spring Boot application

How can we exclude embedded Tomcat server from Spring Boot application so that we can run that jar on JBoss Server?

Upvotes: 16

Views: 66212

Answers (7)

Ali Bildir
Ali Bildir

Reputation: 143

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
        <exclusions>
           <exclusion>
              <artifactId>tomcat-embed-el</artifactId>
              <groupId>org.apache.tomcat.embed</groupId>
           </exclusion>
           <exclusion>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
           </exclusion>
        </exclusions>       
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>        
        <exclusions>
           <exclusion>
              <artifactId>tomcat-embed-el</artifactId>
              <groupId>org.apache.tomcat.embed</groupId>
           </exclusion>
           <exclusion>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-tomcat</artifactId>
           </exclusion>
        </exclusions>
    </dependency>   
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

For Spring Boot 2.7.12 version example is here. If you are using validation don't forget to exclusion from too. PS: dont copy war file from target folder. it has lib-provided folder. use maven-war-plugin and copy from its output folder.

Upvotes: 1

Sеrgеу K
Sеrgеу K

Reputation: 51

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <excludeGroupIds>org.apache.tomcat.embed</excludeGroupIds>
    </configuration>
</plugin>

You can review this article. Dependency Exclusion

Upvotes: 1

Gautam Kumar
Gautam Kumar

Reputation: 43

Better to mention

scope as provided in pom.xml file

to exclude embedded tomcat server in spring boot maven based application.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

Upvotes: 1

jumping_monkey
jumping_monkey

Reputation: 7809

Another way is to mark the tomcat dependency's scope as provided in your pom.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-websocket</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <scope>provided</scope>
    </dependency>

Upvotes: 2

P. S. Bhandari
P. S. Bhandari

Reputation: 21

Add the <exclusions> tag in dependency with <artificatId> as 'spring-boot-starter-web'

<exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </exclusion>
</exclusions>

Your final dependency should look like:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
</dependencies>

Upvotes: 1

Yogi
Yogi

Reputation: 1895

You can exclude in pom file:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <artifactId>tomcat-embed-el</artifactId>
            <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
        <exclusion>
            <artifactId>tomcat-embed-core</artifactId>
            <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
        <exclusion>
            <artifactId>tomcat-embed-websocket</artifactId>
            <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
    </exclusions>
</dependency>

You can follow this link with screenshots

Spring documentation on Embedded servlet container

Upvotes: 20

aditya gupta
aditya gupta

Reputation: 433

you can modify your POM.xml file as follows:

  <!-- Removing the dependency for the embedded tomcat -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>

Upvotes: 12

Related Questions