Springboot jar 打包脚本和启动脚本
说明:
SpringBoot极大的提高了工作效率,集成了各大厂优秀的组件,好处就不多说了,使用配置也非常方便,本文主要讲解如何使用更方便的方式打包发布,利用SpringBoot的新特性内置tomcat,打包jar发布,因为真的很方便不用管tomcat了,自从用了新的方式再也回不去了...
但是如果不做一些调整直接使用SpringBoot打包jar部署,会有很多不方便的地方,首先文件包含全部,每次上传到服务器不方便,其次,更新配置文件或者更新静态html、js、css等都会需要重新打包,那么我们需要做的事情就是分离这一部分更新频率很低的文件js、css、html、lib包,每次发布只打包业务代码。
步骤一:
pom文件添加插件
<build> <finalName>${project.artifactId}finalName> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> <configuration> <mainClass>xx.xx.AdminApplicationmainClass> <layout>ZIPlayout> <includes> <include> <groupId>nothinggroupId> <artifactId>nothingartifactId> include> includes> configuration> plugin> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-jar-pluginartifactId> <configuration> <excludes> <exclude>statics/exclude> <exclude>public/exclude> <exclude>templates/exclude> excludes> <archive> <manifest> <addClasspath>falseaddClasspath> <mainClass>xx.xx.AdminApplicationmainClass> manifest> archive> configuration> plugin> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-dependency-pluginartifactId> <executions> <execution> <id>copy-dependenciesid> <phase>prepare-packagephase> <goals> <goal>copy-dependenciesgoal> goals> <configuration> <outputDirectory>${project.build.directory}/liboutputDirectory> <overWriteReleases>falseoverWriteReleases> <overWriteSnapshots>falseoverWriteSnapshots> <overWriteIfNewer>trueoverWriteIfNewer> configuration> execution> executions> plugin> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-surefire-pluginartifactId> <configuration> <skipTests>trueskipTests> configuration> plugin> plugins> build>
做完这件事后,再执行package是不是最终生成的目录很小了。那么接下来还需要把那些被排除的文件整合到一起发布,这里我没有使用maven的方式去操作,因为要写很多代码,pom文件有点乱,决定用简单的方式,自己写一个bat文件去构建目录,最大的好处是灵活性很高,简洁。
步骤二:
build.bat,自己写目录构建脚本
del /q application\*.* call mvn clean package --settings L:\SofteWare\apache-maven-3.0.5\conf\setting.xml -Dmaven.test.skip=true md application\BOOT-INF\classes md application\lib copy /y src\main\resources application\BOOT-INF\classes ROBOCOPY /E src\main\resources\templates application\BOOT-INF\classes\templates ROBOCOPY /E src\main\resources\statics application\BOOT-INF\classes\statics ROBOCOPY /E src\main\resources\public application\BOOT-INF\classes\public copy /y target\customs-admin.jar application copy /y target\lib\*.jar application\lib\ copy /y startBoot.bat application copy /y startBoot.sh application ROBOCOPY src/main/resources/mapper application/BOOT-INF/classes/mapper /E pause;
最终生成的目录如下
配置文件和页面静态资源全部在BOOT-INF,如下
至此直接运行windows是startBoot.bat,linux是startBoot.sh脚本。分离以后更新版本只需要替换外面的customs-admin.jar即可。
window的bat我写的比较简单
echo update config... jar uf customs-admin.jar BOOT-INF/classes/ echo success!!! echo start jar... L:\SofteWare\java_1.8\bin\java -Dloader.path=lib/ -jar ./customs-admin.jar
Linux的用的多,这里是我写的一个启动脚本,核心内容忘记在哪里下载的了,抱歉,后面我做了一些调整,所有脚本里面的一些配置路径需要修改一下,主要是maven的setting和jdk
startBoot.sh
PS:码云springboot2.0通用权限系统脚手架同步更新 https://gitee.com/shenxingping/XPBoot