说明:
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.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>xx.xx.AdminApplication</mainClass> <layout>ZIP</layout> <includes> <include> <groupId>nothing</groupId><!--打包时排除jar--> <artifactId>nothing</artifactId><!--打包时排除jar--> </include> </includes> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <excludes> <exclude>statics/</exclude><!--打包时排除springboot静态文件目录--> <exclude>public/</exclude><!--打包时排除springboot公共文件目录--> <exclude>templates/</exclude><!--打包时排除springboot页面模板目录--> </excludes> <archive> <manifest> <addClasspath>false</addClasspath> <!--<classpathPrefix>lib/</classpathPrefix>--> <mainClass>xx.xx.AdminApplication</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> <!-- 跳过单元测试 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </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
PS:码云springboot2.0通用权限系统脚手架同步更新 https://gitee.com/shenxingping/XPBoot