Maison > Java > javaDidacticiel > Comment SpringBoot effectue-t-il un packaging et un déploiement simples ?

Comment SpringBoot effectue-t-il un packaging et un déploiement simples ?

不言
Libérer: 2018-09-12 16:16:38
original
1884 Les gens l'ont consulté

Le contenu de cet article explique comment effectuer un packaging et un déploiement simples de SpringBoot ? Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Avant-propos

Cet article présente principalement certaines questions d'emballage et de déploiement de projets de SpringBoot ainsi que des solutions à certains problèmes rencontrés.

Emballage SpringBoot

En termes d'emballage SpringBoot, nous utilisons un projet Web précédent pour l'emballage.
La première chose qui doit être clarifiée est de savoir si le projet est emballé dans un package exécutable jar ou dans un package war exécuté sous tomcat.
Bien que ce projet soit construit avec maven, il est plus pratique de le packager avec maven Cependant, voici également une explication sur la façon de packager des non- ordinaires. projets packagés maven.

Emballage Maven

Le premier est l'emballage maven :
S'il s'agit d'un pot le paquet
doit être spécifié dans pom.xml Le forfait est :

<packaging>jar</packaging>
Copier après la connexion

s'il s'agit d'un forfait guerre.
Vous devez spécifier le package dans pom.xml comme :

<packaging>war</packaging>
Copier après la connexion

et utiliser la balise <scope> pour exclure les dépendances tomcat

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
Copier après la connexion

Ajoutez ensuite la propre méthode d'empaquetage de SpringBoot
L'exemple est le suivant :

<build>
        <defaultGoal>compile</defaultGoal>
        <sourceDirectory>src</sourceDirectory>
        <finalName>springboot-package</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin </artifactId>
                <configuration>
                    <fork>true</fork>
                    <mainClass>com.pancm.App</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
Copier après la connexion

Remarque : La balise <finalName> est après spécifiant l'emballage Le nom, <mainClass> sert à spécifier la fonction principale.

Vous pouvez également utiliser le plugin assembly de maven pour l'empaquetage au lieu de la méthode d'empaquetage fournie avec SpringBoot.
Les exemples sont les suivants :

<build>
    <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-assembly-plugin</artifactId>  
            <version>2.5.5</version>  
            <configuration>
                <archive>  
                    <manifest>  
                        <mainClass>com.pancm.App</mainClass>  
                    </manifest>  
                </archive>  
                <descriptorRefs>  
                    <descriptorRef>jar-with-dependencies</descriptorRef>  
                </descriptorRefs>  
            </configuration>  
        </plugin> 
       </plugins>
    </build>
Copier après la connexion

Après avoir ajouté les balises correspondantes dans pom.xml, il suffit d'ajouter les balises correspondantes au projet peer (pom.xml Même niveau) Saisissez

mvn clean package
Copier après la connexion

pour terminer le packaging
Si vous souhaitez exclure le code de test, vous pouvez saisir :

mvn clean package  -Dmaven.test.skip=true
Copier après la connexion

pour packager.

Généralement nous mettons les fichiers application.properties et logback.xml dans le dossier resources, mais après packaging, ils seront également inclus dans le jar ou war, si on veut changer la configuration, ce sera plus gênant.
Si vous souhaitez les mettre dans le même répertoire que le projet, application.properties peut être directement déplacé hors du répertoire au même niveau que le projet, car le programme Spring sera chargé depuis les chemins suivants selon la prioritéapplication.propertiesFichier de configuration :

  • /répertoire/config dans le répertoire courant

  • Actuel répertoire

  • /répertoire config dans le chemin de classe

  • répertoire racine du chemin de classe

springbootchargé par défautlogback se trouve dans le répertoire classpath Pour le moment, il suffit de spécifier le chemin de logback.xml dans le . application.properties fichier de configuration.
Ajoutez ce qui suit :

logging.config=logback.xml
Copier après la connexion

Si un package jar tiers est introduit, mais qu'il ne peut pas être téléchargé via le serveur privé maven, vous peut le faire manuellement en ce moment Compilez.
Par exemple, j'ai écrit une classe d'outils sous le nom Mytools, puis je l'ai transformée en un package jar, puis je l'ai placée dans le répertoire lib de mon projet et devez le référencer, vous pouvez alors compiler le package jar dans l'entrepôt local, puis ajouter le nom et le numéro de version correspondants à pom.xml.
Exemple de commande :

mvn install:install-file -Dfile=lib/pancmtools.jar -DgroupId=com.panncm.utils -DartifactId=pancm-utils -Dversion=1.0 -Dpackaging=jar
Copier après la connexion

pom.xmlAjouter

<dependency>
            <groupId>com.panncm.utils</groupId>
            <artifactId>pancm-utils</artifactId>
            <version>1.0</version>
</dependency>
Copier après la connexion

au package.

Packaging de projets ordinaires

S'il s'agit d'un projet ordinaire et n'est pas construit à l'aide de maven, vous pouvez utiliser des outils tels que eclipse pour le packaging .
S'il s'agit d'un package jar
exécutez d'abord le projet dans eclipse (exécution de la méthode main), puis dans eclipse Cliquez avec le bouton droit sur le projet export ->java -> runnable jar file-> package required libraries into generated jar pour spécifier la méthode main, puis sélectionnez le nom du package et le chemin du package. Cliquez sur Terminer pour terminer l'emballage.

S'il s'agit d'un package war
, cliquez avec le bouton droit sur le projet dans eclipseexport ->web -> war file, puis sélectionnez le nom du package et le chemin du package. Cliquez sur Terminer pour terminer l'emballage.

Ant Packaging

Après avoir présenté les deux types d'emballage ci-dessus, voici une introduction à l'emballage à travers la méthode ant (nécessite d'installer le ant environnement et méthode d'installation Fondamentalement pareil que maven, précisez le chemin et configurez les variables d'environnement, je n'entrerai pas dans les détails ici).
Généralement après l'empaquetage, nous devons placer le package et les fichiers de configuration dans un répertoire. Si nous ne voulons pas copier et coller manuellement, nous pouvons utiliser ant pour empaqueter et intégrer les fichiers empaquetés. ensemble.
Ici, nous allons écrire un fichier de configuration build.xml.

<?xml version="1.0" encoding="UTF-8"?>
<project name="springboot-package" default="copyAll" basedir=".">
    <property name="build" value="build" />
    <property name="target" value="target" />
    <target name="clean">
        <delete dir="${target}" />
        <delete dir="${build}" />
    </target>

    <target name="create-path" depends="clean">
        <mkdir dir="${build}" />
    </target>

    <target name="mvn_package" depends="create-path">
        <exec executable="cmd" failonerror="true">
            <arg line="/c mvn install:install-file -Dfile=lib/pancmtools.jar -DgroupId=com.panncm.utils -DartifactId=pancm-utils -Dversion=1.0 -Dpackaging=jar" />
        </exec>
        <exec executable="cmd" failonerror="true">
            <arg line="/c mvn clean package" />
        </exec>
    </target>

    <target name="copyAll" depends="mvn_package">
        <copy todir="${build}" file="${target}/springboot-package.jar"></copy> 
        <copy todir="${build}" file="logback.xml"></copy>
        <copy todir="${build}" file="application.properties"></copy>
        <copy todir="${build}" file="run.bat"></copy>
    </target>
</project>
Copier après la connexion

注:<mkdir dir="${build}" />是指定文件存放的文件夹,executable是使用cmd命令,line是执行的语句, 标签是将文件复制到指定的文件夹中。

然后再新建一个 build.bat文件,里面只需要填写 ant就行了。
准备完之后,只需双击build.bat,项目和配置文件就自动到build文件中了,省去了很多操作。

虽然现在流行通过jenkins进行打包部署,不过使用ant加maven进行打包也不错的,比较简单。

打包遇到的一些问题

问题:source-1.5 中不支持 diamond运算符

解决办法一:
在properties添加
<maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <fastjson>1.2.41</fastjson>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
Copier après la connexion

解决方案二:
在plugin中添加 <source>1.8</source><target>1.8</target>

<build>  
        <plugins>  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-compiler-plugin</artifactId>  
                <version>3.3</version>  
                <configuration>  
                    <source>1.8</source>  
                    <target>1.8</target>  
                </configuration>  
            </plugin>  
        </plugins>  
    </build>
Copier après la connexion

问题二:打包出现某jar包无法打入

实际是可以下载,但是无法将此打入包中

解决办法:
pom.xml中添加

  <repositories>  
     <repository>  
            <id>spring-milestone</id>  
            <url>http://repo.spring.io/libs-release</url>  
     </repository>  
   </repositories>
Copier après la connexion

问题三:mvn clean 失败,出现Failed to execute goal

原因: 在clean的时候,target里面的文件被占用了。
解决办法: 不占用就行了。

SpringBoot部署

如果是jar项目
Windows系统在项目同级目录下输入:

java -jar springboot-package
Copier après la connexion

即可启动项目。
关闭项目,只需关掉dos界面就可以了。
也可以写一个bat文件进行运行。
示例:

@echo off
title "springboot-package"
java -jar springboot-package.jar
Copier après la connexion

Linux系统在项目同级目录下输入:

nohup -jar springboot-package &
Copier après la connexion

即可启动。
关闭输入:

kill -9 pid(jar的进程id)
Copier après la connexion

也可以在init.d注册一个服务
示例:

ln -s /home/jars/app/springboot-package.jar /etc/init.d/springboot-package
chmod +x /etc/init.d/springboot-package
Copier après la connexion

然后输入:

service springboot-package start|stop|restart
Copier après la connexion

进行启动或者停止。
当然也可以编写xshell脚本进行启动和关闭。
示例:

#!/bin/bash
APPDIR=`pwd`
PIDFILE=$APPDIR/springboot-package.pid
if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); then
echo "springboot-package is already running..."
exit 1
fi
nohup java -jar $APPDIR/springboot-package.jar >/dev/null 2>&1 &
echo $! > $PIDFILE
echo "start springboot-package..."
Copier après la connexion

如果是war项目
war放在tomcat/webapp目录下,然后启动tomcat就可以了。Windows系统 在tomcat/bin目录下双击startup.bat即可启动,双击shutdown.bat关闭。
Linux系统则在tomcat/bin 目录下输入startup.sh即可启动, 输入shutdown.sh关闭
附SpringBoot打包部署的项目工程地址:
https://github.com/xuwujing/springBoot-study/tree/master/springboot-package

相关推荐:

Tomcat部署Web项目该如何实现?

编写简单的Mapreduce程序并部署在Hadoop2.2.0上运行

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal