当前位置: 首页 > news >正文

【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包

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><!-- &lt;!&ndash;  指定该Main Class为全局的唯一入口 &ndash;&gt;--><!-- <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

http://www.lryc.cn/news/125202.html

相关文章:

  • 指令集_基础
  • 学习Vue:数据绑定的基本概念
  • Python 装饰器 - 推导式(列表推导式) - 迭代器 - 生成器 - 闭包
  • 【大数据】Flink 详解(二):核心篇 Ⅲ
  • Jmeter性能测试系列-性能测试需求分析
  • Syncfusion Essential Studio JavaScrip Crack
  • 8.13黄金是否进入下行通道?下周开盘如何布局
  • Idea的基本使用带案例---详细易懂
  • MySQL中的用户管理
  • 【STM32】利用CubeMX对FreeRTOS用按键控制任务
  • c# .net mvc的IHttpHandler奇妙之旅--图片文件请求安全过滤,图片防盗链
  • STM32F407使用Helix库软解MP3并通过DAC输出,最精简的STM32+SD卡实现MP3播放器
  • STM32 CAN 过滤器设置
  • 日常BUG—— maven编译报错
  • Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理
  • 学习Vue:插值表达式和指令
  • echart 3d立体颜色渐变柱状图
  • linux shell变量
  • Linux 发行版 Debian 12.1 发布
  • 【Rust】Rust学习 第七章使用包、Crate和模块管理不断增长的项目
  • 网站SSL安全证书是什么及其重要性
  • Android Alarm闹钟API使用心得
  • 什么是业务敏捷,如何实现业务敏捷?
  • ​ATF(TF-A)安全通告 TFV-7 (CVE-2018-3639)​
  • 第三天课程下
  • 嵌入式编译FFmpeg6.0版本并且组合x264
  • 原子css 和 组件化css如何搭配使用
  • Python 实现Selenium录屏的一种方法(图片整合成动态图)
  • 【设计模式——学习笔记】23种设计模式——策略模式Strategy(原理讲解+应用场景介绍+案例介绍+Java代码实现)
  • 通讯商二要素Api接口验证真伪