Gerando WAR file com Spring Boot

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa

Índice

Alterando o POM

Para criar um arquivo WAR, é preciso algumas alterações no seu arquivo pom.xml. A seguir cada passo que deve realizar: 1. Informe ao Maven que será criado um arquivo WAR, com o nó <packaging>.

<packaging>war</packaging>

A informação de <packaging> deve ficar por entre o nó <project …>. Para simplificar, coloque após o nó <description>, como pode ser visto no trecho a seguir:

<?xml version="1.0" encoding="UTF-8"?>
<project …>
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.0.BUILD-SNAPSHOT</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>meupacote</groupId>
	<artifactId>SpringMVCSession</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>SpringMVCSession</name>
	<description>Primeiro Projeto com Spring MVC</description>
	<packaging>war</packaging> 
…

2. Adição do nome do arquivo WAR deve ser feita através do nó <finalName>, no arquivo POM. Você pode adicionar com o mesmo nome do informado em <artfactId>, ou outro nome que desejar. Se for usar o mesmo nome, pode ser adicionada a seguinte informação no POM, por entre o nó <build>:

	
<build>
	<finalName>${project.artifactId}</finalName>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

3. Você pode operar em modo standalone no desenvolvimento, mas como o deploy será em um contêiner, você precisa informar ao Spring Boot que o Apache Tomcat é provided, similar ao que é feito em projetos Java Web com a API Servlet, onde será provido o serviço. Adicione a seguinte dependência, mostrada no trecho a seguir, no POM do seu projeto:

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

4. Certifique-se também que a dependência tomcat-embed-jasper está como provided em seu escopo, como mostrado no trecho a seguir.

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

Alterando a classe de inicialização

A classe principal do seu projeto, a anotada com @SpringBootApplication, que o Spring Boot criou automaticamente no pacote raiz, também precisa ser alterada. A seguir você tem a Listagem que apresenta a classe original criada na geração do aplicativo chamado SpringMvcApplication.

Listagem - A classe SpringMvcApplication de exemplo original

package meupacote;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringMvcApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringMvcApplication.class, args);
	}

}


Para que você possa trabalhar também sem operar de modo standalone, precisa fazer as seguintes alterações, mostradas na Listagem a seguir.

Listagem - A classe SpringMvcApplication de exemplo alterada

 package meupacote;

 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

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

	public static void main(String[] args) {
		SpringApplication.run(SpringMvcApplication.class, args);
	}

 }


Observe que na Listagem a classe SpringMvcApplication, de exemplo, foi estendida para a classe abstrata SpringBootServletInitializer, do pacote org.springframework.boot.web.servlet.support. Ao estender a classe SpringBootServletInitializer, você pode fazer uso do método configure, que recebe no exemplo a anotação @Override. O método configure recebe a classe SpringApplicationBuilder como parâmetro e retorno, permitindo ao Spring Boot realizar a inicialização da aplicação em um contêiner Servlet.

Gerando o arquivo WAR no Maven

No Maven, para que ocorra a criação do seu arquivo WAR, utilize este comando:

mvn clean package

Gerando o arquivo WAR através Spring Tool Suite

Através da ferramenta Spring Tool Suite, para executar o Maven, realize os seguintes passos:
1. Vá em Run » Run As e selecione Maven build. Aguarde a inicialização do assistente.
2. Na caixa de diálogo, clique em Workspace e selecione o projeto que está trabalhando.
3. Em Goals, digite apenas clean package e confirme em Run.