Gerando WAR file com Spring Boot

De Wiki Integrator do Brasil
Edição feita às 16h26min de 25 de outubro de 2019 por Integratorhost (disc | contribs)

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/> </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.