Mudanças entre as edições de "Gerando WAR file com Spring Boot"
Linha 28: | Linha 28: | ||
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>: | 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>: | ||
− | < | + | <pre> |
<build> | <build> | ||
<finalName>${project.artifactId}</finalName> | <finalName>${project.artifactId}</finalName> | ||
Linha 38: | Linha 38: | ||
</plugins> | </plugins> | ||
</build> | </build> | ||
− | </ | + | </pre> |
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: | 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: | ||
− | < | + | <pre> |
<dependency> | <dependency> | ||
<groupId>org.springframework.boot</groupId> | <groupId>org.springframework.boot</groupId> | ||
Linha 47: | Linha 47: | ||
<scope>provided</scope> | <scope>provided</scope> | ||
</dependency> | </dependency> | ||
− | </ | + | </pre> |
4. Certifique-se também que a dependência tomcat-embed-jasper está como provided em seu escopo, como mostrado no trecho a seguir. | 4. Certifique-se também que a dependência tomcat-embed-jasper está como provided em seu escopo, como mostrado no trecho a seguir. | ||
− | < | + | <pre> |
<dependency> | <dependency> | ||
<groupId>org.apache.tomcat.embed</groupId> | <groupId>org.apache.tomcat.embed</groupId> | ||
Linha 55: | Linha 55: | ||
<scope>provided</scope> | <scope>provided</scope> | ||
</dependency> | </dependency> | ||
− | </ | + | </pre> |
=== Alterando a classe de inicialização === | === Alterando a classe de inicialização === | ||
Linha 61: | Linha 61: | ||
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. | 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 | + | '''Listagem - A classe SpringMvcApplication de exemplo original''' |
− | < | + | <pre> |
package meupacote; | package meupacote; | ||
Linha 77: | Linha 77: | ||
} | } | ||
− | </ | + | </pre> |
Para que você possa trabalhar também sem operar de modo standalone, precisa fazer as seguintes alterações, mostradas na Listagem a seguir. | 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 | + | '''Listagem - A classe SpringMvcApplication de exemplo alterada''' |
− | < | + | <pre> |
package meupacote; | package meupacote; | ||
Linha 104: | Linha 104: | ||
} | } | ||
− | </ | + | </pre> |
Edição atual tal como às 16h29min 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/> <!-- 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.