Quando tive meu primeiro contato com o Spring-Boot, tive um pouco de preconceito, por não conseguir fazer o deploy em servidores de aplicação ou Servlet containers, admito uma grave ignorância minha, pois o Spring-Boot fornece uma forma de aproveitar todas as vantagens do Framework, e ainda assim usar o bom e velho deploy no Servlet container ou Servidor de aplicação favorito.

Para minha surpresa, a configuração e as mudanças necessárias, em um projeto Spring-Boot padrão, são bem simples, a seguir você pode ver a main class do projeto.

@SpringBootApplication
public class SpringBootDeployableApplication extends SpringBootServletInitializer {
    
    @Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(SpringBootDeployableApplication.class);
	}

}

Bem simples não? você pode até manter o método main, para simplificar o ambiente de desenvolvimento, mas, tenha em mente que o ideal é manter o ambiente de desenvolvimento o mais próximo possível do ambiente de produção, para evitar surpresas (na minha máquina funciona LOL)

@SpringBootApplication
public class SpringBootDeployableApplication extends SpringBootServletInitializer {
    
    public static void main(String[] args) {
		SpringApplication.run(SpringBootDeployableApplication.class, args);
	}

    @Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(SpringBootDeployableApplication.class);
	}

}

Outro ponto importante, é que você deve mudar o tipo do empacotamento do projeto no seu pom.xml

    ....
    <groupId>me.efraimgentil</groupId>
	<artifactId>spring-boot-deployable</artifactId>
	<version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    ....

Assim, uma vez rodando o comando package do Maven, teremos o .war disponível para ser distribuído. Entao basta fazer o deploy na sua instância do Tomcat ou outro servidor desejado.

Os pacotes do Spring-Boot/Starters adicionam muitas bibliotecas/dependencias na aplicação, e algumas delas podem conflitar com as verções que são distribuidas junto com os servidores/containers. Mantenha em mente que pode ser necessário um trabalho para identificar e marcar esses conflitos para serem excluídos no seu pom.xml.