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.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

startBoot.sh

 

PS:碼雲springboot2.0通用權限系統腳手架同步更新 https://gitee.com/shenxingping/XPBoot


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM