English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Introdução
Os projetos Spring Boot geralmente executam o Tomcat ou o Jetty embebido, raramente utilizam pacotes war para deslocar para contêineres de serviços externos, mesmo no Linux, geralmente é necessário inicializar diretamente a classe Application, mas às vezes precisamos deslocar para servidores externos, o que é um pouco complicado para o Spring Boot
Não há muito a dizer, vamos ver a introdução detalhada juntos.
Declaração do ambiente:
jdk:1.8
Servidor: Aliyun, ubuntu 16.04
springBoot:1.5.9.RELEASE
Objetivo
Vamos empacotar o SpringBoot no Tomcat remoto do servidor.
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>waibao</groupId> <artifactId>project</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 移除tomcat的支持,改成编译时支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis<-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!--非严格模式 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- 配置thymeleaf的非严格模式,需要该依赖--> <dependency> <groupId>net.sourceforge.nekohtml</groupId> <artifactId>nekohtml</artifactId> <version>1.9.22</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis<-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql<-connector-java</artifactId> <version>6.0.6</version> </dependency> <!-- 阿里连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.5</version> </dependency> <!-- fastJson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.40</version> </dependency> <!-- 热部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>1.5.9.RELEASE</version> <optional>true</optional> <scope>true</scope> </dependency> </dependencies> <build> <finalName>/testweb</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project>
注意
1、maven 插件不能使用springBoot自带的插件。我使用这个插件报以下错误
Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar (default-jar) on project project: Execution default-jar of goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-jar-plugin:2.6:jar: java.lang.ExceptionInInitializerError: null
modifique o plug-in Maven
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin>
É importante notar que, porque eu não tenho web.xml, adicionei
<configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration>
2、
<build> <finalName>xxx</finalName> </build>
O finalName deve coincidir com o context no application.yml-o caminho deve ser consistente.
3、precisa mudar a dependência do tomcat para a compilação
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
4、classe de entrada do springBoot, herda SpringBootServletInitializer e sobrescreve
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MainApplication.class); }
O MainApplication.class é a classe de entrada do springBoot.
Empacotamento
Vá para o diretório raiz do projeto. Se você estiver usando o IDEA, digite diretamente aqui:
mvn clean package -DskipTests
Após a conclusão da empacotamento, o arquivo .war correspondente será gerado na pasta target do projeto.
Upload
Basta dropping o arquivo war diretamente na pasta webapps do tomcat.
Problemas ainda não resolvidos:
Originalmente, queria criar diretamente um pacote jar. Então, inicializar o springBoot. Infelizmente, o pacote jar continuou a apresentar erros na parte do plug-in Maven. Só consegui criar um pacote war e upload para o tomcat.
Se alguém resolver este problema, por favor, me avise.
Neste artigo, diz que isso é um bug...
https://issues.apache.org/jira/navegar/MSITE-724
Atualização。。。。
O problema foi resolvido. Você pode diretamente empacotar o springBoot em Jar e executá-lo.
Razão:
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins>
o exemplo oficial fornecido pelo springBoot, que usa este plugin.
O Maven automaticamente baixará 2.4 versão e 2.6versão do maven-jar-plugin.
E, o Maven padrão depende 2.6versão. No início, não notei que o erro reportado pelo projeto era maven-jar-plugin 2.6jar incompatível. Isso causou a falta de erro encontrada.
Isso é 2.6Incompatibilidade de versão. Basta manualmente modificá-lo para 2.4A versão é suficiente. Como mostrado a seguir:
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> </plugin> </plugins>
Resumo
Isso é tudo o que há neste artigo. Espero que o conteúdo deste artigo tenha algum valor de referência para seu aprendizado ou trabalho. Se tiver alguma dúvida, você pode deixar um comentário para trocar ideias. Obrigado pelo suporte ao Tutorial de Grito.
Declaração: O conteúdo deste artigo é extraído da Internet, pertence ao respectivo proprietário. O conteúdo é contribuído e carregado voluntariamente pelos usuários da Internet. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade por questões legais relacionadas. Se você encontrar conteúdo suspeito de infringir direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas relevantes. Assim que verificada, o site deletará imediatamente o conteúdo suspeito de infringir direitos autorais.)