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.
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.
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.
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>
s'il s'agit d'un forfait guerre.
Vous devez spécifier le package dans pom.xml
comme :
<packaging>war</packaging>
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>
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>
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>
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
pour terminer le packaging
Si vous souhaitez exclure le code de test, vous pouvez saisir :
mvn clean package -Dmaven.test.skip=true
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
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
pom.xmlAjouter
<dependency> <groupId>com.panncm.utils</groupId> <artifactId>pancm-utils</artifactId> <version>1.0</version> </dependency>
au package.
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.
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>
注:<mkdir dir="${build}" />
是指定文件存放的文件夹,executable是使用cmd命令,line是执行的语句, 标签是将文件复制到指定的文件夹中。
然后再新建一个 build.bat文件,里面只需要填写 ant
就行了。
准备完之后,只需双击build.bat,项目和配置文件就自动到build文件中了,省去了很多操作。
虽然现在流行通过jenkins进行打包部署,不过使用ant加maven进行打包也不错的,比较简单。
解决办法一:
在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>
解决方案二:
在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>
实际是可以下载,但是无法将此打入包中
解决办法:
在pom.xml中添加
<repositories> <repository> <id>spring-milestone</id> <url>http://repo.spring.io/libs-release</url> </repository> </repositories>
原因: 在clean的时候,target里面的文件被占用了。
解决办法: 不占用就行了。
如果是jar项目
Windows系统在项目同级目录下输入:
java -jar springboot-package
即可启动项目。
关闭项目,只需关掉dos界面就可以了。
也可以写一个bat文件进行运行。
示例:
@echo off title "springboot-package" java -jar springboot-package.jar
Linux系统在项目同级目录下输入:
nohup -jar springboot-package &
即可启动。
关闭输入:
kill -9 pid(jar的进程id)
也可以在init.d
注册一个服务
示例:
ln -s /home/jars/app/springboot-package.jar /etc/init.d/springboot-package chmod +x /etc/init.d/springboot-package
然后输入:
service springboot-package start|stop|restart
进行启动或者停止。
当然也可以编写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..."
如果是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
相关推荐:
编写简单的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!