Gerando WAR file com Spring Boot
Índice[ocultar] |
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.