說明:
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