English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Préambule
Les projets Spring Boot sont généralement exécutés par un serveur Tomcat ou Jetty intégré, rarement déployés en tant que package WAR dans un conteneur de service externe, même s'ils sont placés sur Linux, ils démarrent généralement directement la classe Application, mais parfois nous devons les déployer sur un serveur externe, ce qui est un peu difficile pour Spring Boot
Ne disons pas plus long, voyons ensemble la présentation détaillée.
Déclaration d'environnement :
jdk :1.8
Serveur : AliCloud, ubuntu 16.04
springBoot:1.5.9.RELEASE
Objectif
Packez l'application Spring Boot sur le serveur Tomcat distant.
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
Modifier le plugin Maven en}}
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin>
Il convient de noter que, car je n'ai pas de web.xml, j'ai ajouté
<configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration>
2、
<build> <finalName>xxx</finalName> </build>
finalName doit correspondre à context dans application.yml-chemin d'accès identique.
3、il faut changer la dépendance de Tomcat en compilation
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
4、classe d'entrée springBoot, héritant de SpringBootServletInitializer et en surchargeant
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MainApplication.class); }
Dans lequel MainApplication.class est la classe d'entrée de springBoot.
Assemblez
Allez dans le répertoire racine du projet. Si vous utilisez IDEA, entrez directement ici :
mvn clean package -DskipTests
Après la fin de l'assemblage, un fichier .war correspondant sera généré dans le dossier target du projet.
Télécharger
Il suffit de jeter le fichier war sous webapps de Tomcat.
Problèmes non résolus pour le moment :
Je voulais d'abord le compiler directement en jar. Puis démarrer springBoot directement. Malheureusement, il a fallu compiler en Jar et il a toujours eu des erreurs dans la partie plug-in Maven. Il n'a pas pu être compilé en war et uploadé sur Tomcat.
Si quelqu'un a résolu ce problème, veuillez me le faire savoir.
Dans cet article, on dit que c'est un bug....
https://issues.apache.org/jira/parcourir/MSITE-724
Mise à jour。。。。
Le problème a été résolu. Vous pouvez directement emballer springBoot en Jar et le lancer.
Raison :
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins>
l'exemple officiel donné par springBoot, utilise ce plugin.
Maven téléchargera automatiquement 2.4 version et 2.6version de maven-jar-plugin.
tandis que, Maven dépend par défaut de 2.6version...-jar-plugin 2.6jar incompatible. Cela a conduit à ne pas trouver d'erreur en continu...
C'est-à-dire 2.6Incompatible de version. Il suffit de le modifier manuellement 2.4La version suffit. Voici l'exemple :
<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>
Résumé
Voici la totalité du contenu de cet article. J'espère que le contenu de cet article aura une certaine valeur de référence pour votre apprentissage ou votre travail. Si vous avez des doutes, vous pouvez laisser des messages pour échanger. Merci de votre soutien au tutoriel d'alarme.
Déclaration : le contenu de cet article est extrait du réseau, propriété de l'auteur original, contribué par les utilisateurs d'Internet et téléchargé par eux-mêmes. Ce site ne détient pas de propriété, n'a pas été édité par l'homme et n'assume aucune responsabilité juridique. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (au moment de l'envoi d'un e-mail, veuillez remplacer # par @ pour signaler une violation et fournir des preuves. Une fois confirmée, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.).