Mudanças entre as edições de "Gerando WAR file com Spring Boot"
(Criou página com '=== 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...') |
Edição das 16h23min de 25 de outubro de 2019
Í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.