SpringBoot項目使用maven-assembly-plugin插件多環境打包
1.創建SpringBoot項目并在pom.xml文件中添加maven-assembly-plugin配置
<!-- 多環境配置 --><profiles><!-- 開發環境 --><profile><id>dev</id><properties><profileActive>dev</profileActive></properties><!-- 默認激活的環境 --><activation><activeByDefault>true</activeByDefault></activation></profile><!-- 生產環境 --><profile><id>prod</id><properties><profileActive>prod</profileActive></properties><activation><activeByDefault>false</activeByDefault></activation></profile></profiles><build><!-- 打包后的jar包名稱 --><finalName>spring-boot-demo</finalName><!-- 打包配置 --><plugins><!-- maven 打包時跳過測試 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skip>true</skip></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- <!– 指定該Main Class為全局的唯一入口 –>--><!-- <mainClass>com.xhs.ToolsApp</mainClass> --><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration><executions><execution><goals><!--可以把依賴的包都打包到生成的Jar包中--><goal>repackage</goal></goals></execution></executions></plugin><!-- 個性化打包 --><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><!-- 打包文件名字不包含 assembly.xml 中 id --><appendAssemblyId>false</appendAssemblyId><descriptors><descriptor>src/main/assembly/assembly.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins><!-- 資源配置 --><resources><resource><directory>src/main/java</directory><filtering>true</filtering><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>*.yml</include><include>*.xml</include></includes></resource></resources></build>
2.創建 在src/main/assembly目錄下創建assembly.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<assembly><!-- 打包文件名的標識符,用來做后綴--><id>make-assembly</id><!-- 打包的類型,如果有N個,將會打N個類型的包 --><formats><format>tar.gz</format><format>zip</format></formats><!-- 壓縮包下是否生成和項目名相同的根目錄 --><includeBaseDirectory>true</includeBaseDirectory><!-- 用來設置一組文件在打包時的屬性。--><fileSets><!-- 0755->即用戶具有讀/寫/執行權限,組用戶和其它用戶具有讀寫權限;--><!-- 0644->即用戶具有讀寫權限,組用戶和其它用戶具有只讀權限;--><!-- 將src/bin目錄下的jar啟動腳本輸出到打包后的目錄中 --><fileSet><directory>${basedir}/src/main/bin</directory><outputDirectory>${file.separator}</outputDirectory><fileMode>0755</fileMode><includes><include>**.sh</include><include>**.bat</include></includes></fileSet><!-- 把項目的配置文件,打包進壓縮文件的config目錄 --><fileSet><directory>${basedir}/src/main/resources</directory><outputDirectory>config</outputDirectory><fileMode>0644</fileMode><includes><include>*.properties</include><include>*.yml</include><include>*.xml</include></includes></fileSet><!-- 把項目自己編譯出來的jar文件,打包進zip文件的根目錄 --><fileSet><directory>${project.build.directory}</directory><outputDirectory>${file.separator}</outputDirectory><includes><include>*.jar</include></includes></fileSet></fileSets>
</assembly>
3.在src/main/bin創建在linux環境啟動jar包的腳本
#!/bin/bash# jar包名稱
JAR_FILE="spring-boot-demo.jar"
# pid 名稱
PID_FILE="spring-boot-demo.pid"start() {if [ -f "$PID_FILE" ]; thenecho "應用程序已在運行,PID: $(cat $PID_FILE) .........."else# 后臺啟動jar包,并將啟動日志輸出到log.log文件中nohup java -jar -Dloader.path=.,3rd-li $JAR_FILE >> log.log 2>&1 &echo $! > $PID_FILEecho "應用程序已成功啟動,PID: $(cat $PID_FILE) .........."fi
}stop() {if [ -f "$PID_FILE" ]; thenkill -9 $(cat $PID_FILE)rm $PID_FILEecho "應用程序已成功停止.........."elseecho "應用程序未運行.........."fi
}restart() {echo "正在重啟.........."stopstartecho "重啟成功.........."
}case "$1" instart)start;;stop)stop;;restart)restart;;*)echo "使用: $0 {start|stop|restart} 命令"exit 1;;
esac
4.配置application.yml文件
#application.yml
spring:profiles:active: @profileActive@
#application-dev.yml
server:port: 8001spring:application:name: spring-boot-demo
#application-prod.yml
server:port: 8001spring:application:name: spring-boot-demo
5.啟動項目
6.打包
mvn clean package -P prod
7.打包后的目錄結構
8.上傳到linux服務器并啟動jar包
# 解壓tar包
tar -zxf spring-boot-demo.tar.gz
#啟動jar包
sh app.sh start
#查看日志
tail -f log.log
9.調用接口測試
10.源碼地址
https://gitee.com/xhs101/spring-boot-demo