springboot三種打包方式


springboot應用打包的兩種方式

一.純手工方式

1).在工程的根目錄打開cmd命令行

2).執行maven clean install命令,打成jar包,此處有坑(不會打依賴包進去)

3).需要使用maven clean package dependency:copy-dependencies使命,把相關依賴包輸出

3).命令執行完成后,會在target/目錄下生成xxx.jar包和一個dependency目錄(依賴包所在目錄)(具體記不清楚了)

4).找一個地方新建一個文件夾(隨意),我這是c:/test/,在test目錄下再新建一個文件夾lib

5).把生成的依賴包和打好的xxx.jar包都扔到c:/test/lib/中

6).在c:/test/目錄中執行java -Djava.ext.dirs=lib com.xxx.App(主啟動類)命令后,springboot程序就可以啟動了

 

純手工方式填坑:

1)).不建議使用此種方式來執行程序,由於-Djava.ext.dirs參數是收ext class loader來加載的,一般的java程序是使用app class loader來加載代碼的

2)).由於我的代碼用了HS256加密算法,用這種方式就報了HS256加密方式不可用的異常

3)).可能還存在其他的坑,暫時沒遇到

二.使用maven打包插件:appassembler方式

此各方式在打包過后,批處理、日志目錄、配置文件相關、等會自動生成,不需要手動寫啟動腳本

 

1.在<plugins>標簽內加入以下配置

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.0.RELEASE</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<!-- 生成linux, windows兩種平台的執行腳本 -->
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
<!-- 打包后的根目錄 -->
<assembleDirectory>${project.build.directory}/product</assembleDirectory>
<!-- 打包的jar,以及maven依賴的jar放到這個目錄里面 -->
<repositoryName>lib</repositoryName>
<!-- 可執行腳本的目錄 -->
<binFolder>bin</binFolder>
<!-- 配置文件的目標目錄 -->
<configurationDirectory>conf</configurationDirectory>
<!-- 拷貝配置文件到上面的目錄中 -->
<copyConfigurationDirectory>true</copyConfigurationDirectory>
<!-- 從哪里拷貝配置文件 (默認src/main/config) -->
<copyConfigurationDirectory>updown/src/main/resources</copyConfigurationDirectory>
<!-- lib目錄中jar的存放規則,默認是${groupId}/${artifactId}的目錄格式,flat表示直接把jar放到lib目錄 -->
<repositoryLayout>flat</repositoryLayout>
<encoding>UTF-8</encoding>
<logsDirectory>logs</logsDirectory>
<tempDirectory>tmp</tempDirectory>
<programs>
<program>
<id>udApp</id>
<!-- 啟動類 -->
<mainClass>com.bjrun.UpDownMain</mainClass>
<jvmSettings>
<extraArguments>
<extraArgument>-server</extraArgument>
<extraArgument>-Xmx1G</extraArgument>
<extraArgument>-Xms1G</extraArgument>
</extraArguments>
</jvmSettings>
</program>
</programs>
</configuration>
</plugin>
2.在項目根目錄打開cmd命令
3.執行mvn clean package appassembler:assemble命令打包程序
4.3步命令執行完成后,會在target目錄下輸出程序的相關項
5.進到target/product目錄下,雙擊xxx.bat批處理文件,即可運行springboot程序
此方式填坑
1).打開批處理文件時,一閃而過,Logs目錄也沒有輸出,遇到這種情況,需要先打開cmd命令窗口,進到批處理所在目錄,執行批處理文件,可以看到報錯信息
2).由於項目依賴包過多,所以在運行時出現了“輸入行太長,命令語法不正確”的錯誤,修改插件生成的批處理文件,如下

三.所有相關依賴打到一個jar包中去
昨天是死活把依賴包打不進一個jar包中去,今天又試了一下,竟然成功了!!!!
需要在pom.xml中添加以下配置
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.0.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
直接在idea中maven package,就可以了


免責聲明!

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



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