SpringBoot线上打包

背景:

1.我们打包时其实需要很多资源打到jar包之外,这样子修改了配置后,就可以生效了。

2.包的命名: 以mj为例子:

        业务层:

                com.jn.mj                 // 这个是这个工程的总包名

                com.jn.mj.gateway  // web服集群

                com.jn.mj.server     // 游戏服 

        框架层:

                com.jn.orm     // 对orm的包装

                com.jn.net      // 对tcp和websocket的支持   

                com.jn.excel  // 导表工具

        

1)目录结构

2)pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.jn</groupId><artifactId>mj</artifactId><version>0.0.1-SNAPSHOT</version><name>mj</name><description>Demo project for Spring Boot</description><properties><java.version>11</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!--测试/正式环境: 选择不同的配置文件--><profiles><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><build><resources></resources></build></profile><profile><id>prod</id><build><resources><resource><directory>src/main/resources</directory><excludes><exclude>**/*.*</exclude></excludes></resource></resources></build></profile></profiles><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><includeSystemScope>true</includeSystemScope><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>11</source><target>11</target></configuration></plugin><plugin><artifactId>maven-assembly-plugin</artifactId><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals><configuration><descriptors><descriptor>src/main/assembly/assembly.xml</descriptor></descriptors></configuration></execution></executions></plugin></plugins></build></project>

3)assembly.xml

<assembly><id>assembly</id><formats><format>tar.gz</format></formats><includeBaseDirectory>true</includeBaseDirectory><fileSets><fileSet><directory>src/main/assembly/bin</directory><outputDirectory>./bin</outputDirectory><fileMode>0755</fileMode></fileSet><fileSet><directory>src/main/resources</directory><includes><include>application.properties</include></includes><outputDirectory>./config</outputDirectory><fileMode>0644</fileMode></fileSet></fileSets><dependencySets><dependencySet><outputDirectory>lib</outputDirectory><scope>runtime</scope></dependencySet></dependencySets>
</assembly>

4)package.sh // 打包时跳过测试,使用prod环境,这样子打的包不会有application.properties

mvn clean package -DskipTests=true -Pprod

5)start.sh // 注意:运行jar的路径!!!

#!/bin/bash# 这个路径特别重要,必须回到总目录下
cd `dirname $0`
cd ..java -jar ./lib/mj-0.0.1-SNAPSHOT.jar

6)打包后,解压开

7)展开看下打包生成的东西

也就是我们的jar,配置和启动脚本都已经放到指定目录

8)双击bin/start.sh就可以运行起来了,而且会走config下application.properties配置的端口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/484601.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三防平板电脑丨亿道工业三防平板丨三防平板定制丨机场维修应用

随着全球航空交通的增长和机场运营的扩展&#xff0c;机场维护的重要性日益凸显。为确保机场设施的安全和顺畅运行&#xff0c;采取适当的措施来加强机场维护至关重要。其中&#xff0c;三防平板是一种有效的工具&#xff0c;它可以提供持久耐用的表面保护&#xff0c;使机场维…

Vue 进阶系列丨实现简易reactive和ref

Vue 进阶系列教程将在本号持续发布&#xff0c;一起查漏补缺学个痛快&#xff01;若您有遇到其它相关问题&#xff0c;非常欢迎在评论中留言讨论&#xff0c;达到帮助更多人的目的。若感本文对您有所帮助请点个赞吧&#xff01; 2013年7月28日&#xff0c;尤雨溪第一次在 GItHu…

docker (56) Recv failure: Connection reset by peer

docker 运行一个spring boot的api接口项目&#xff0c;在虚拟机上测试&#xff1a; curl 127.0.0.1:9997/doc.html 报错&#xff1a;(56) Recv failure: Connection reset by peer 在网上搜了很多包括&#xff1a; 检查防火墙是否关闭 systemctl status firewalld 检查防火…

PLC_博图系列☞基本指令“异或“运算

PLC_博图系列☞基本指令“异或“运算 文章目录 PLC_博图系列☞基本指令“异或“运算背景介绍X&#xff1a;“异或”运算说明参数示例真值表 关键字&#xff1a; PLC、 西门子、 博图、 Siemens 、 异或 背景介绍 这是一篇关于PLC编程的文章&#xff0c;特别是关于西门子的…

LeetCode 0106.从中序与后序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看)

【LetMeFly】106.从中序与后序遍历序列构造二叉树&#xff1a;分治&#xff08;递归&#xff09;——五彩斑斓的题解&#xff08;若不是彩色的可以点击原文链接查看&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/construct-binary-tree-from-inorder-an…

OpenTiny Vue 组件库适配微前端可能遇到的4个问题

本文由体验技术团队 TinyVue 项目成员岑灌铭同学创作。 前言 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略&#xff0c;每个应用可以选择不同的技术栈&#xff0c;独立开发、独立部署。 TinyVue组件库的跨技术栈能力与微前端十…

四、Burpsuite工具之proxy模块详解-intercept功能

前言&#xff1a; 过了一个年&#xff0c;感觉好久都没有更新了&#xff0c;今天就从burpsuite的更新开始吧。 前面已经说过了burpsuite的安装和proxy代理的配置&#xff0c;今天说一下proxy模块中非常有用的intercept功能。 intercept功能介绍&#xff1a; intercept是拦截…

element-ui 中的表格设置正确的排序以及怎么设置默认排序

本文主要解决两个问题&#xff0c;第一个&#xff0c;在element-ui中&#xff0c;直接设置参数排序&#xff0c;达不到预期效果&#xff0c;预期是按照数字的大小进行排序&#xff1b;第二个&#xff0c;想对表格中某个字段设置默认的排序方式 现象&#xff1a; 直接设置在 el-…

Unity NavMesh 清除不可行走区域

通常场景中物体设置为static或Navigation Static后&#xff0c;打开Navigation使用默认设置烘焙NavMesh&#xff0c;模型顶部和底部会出现蓝色网格&#xff0c;但其中有部分属于不可能到达区域&#xff0c;如下图 本文介绍两种可去掉NavMesh中不需要网格的方法&#xff1a; 方…

辽宁博学优晨教育科技有限公司视频剪辑培训打造技能新星

在数字时代&#xff0c;视频剪辑已成为一项炙手可热的技能。辽宁博学优晨教育科技有限公司&#xff0c;作为业内知名的教育培训机构&#xff0c;其视频剪辑培训项目备受关注。那么&#xff0c;辽宁博学优晨教育科技有限公司的视频剪辑培训究竟可靠吗&#xff1f;本文将为您深入…

从零学习Linux操作系统第二十七部分 shell脚本中的变量

一、什么是变量 变量的定义 定义本身 变量就是内存一片区域的地址 变量存在的意义 命令无法操作一直变化的目标 用一串固定的字符来表示不固定的目标可以解决此问题 二、变量的类型及命名规范 环境级别 export A1 在环境关闭后变量失效 退出后 关闭 用户级别&#xff…

vue大文件读取部分内容,避免重复加载大文件,造成流量浪费

使用场景&#xff1a;项目点云地图是pcd文件&#xff0c;但是文件可能上百兆&#xff0c;我需要获取到文件中的版本信息&#xff0c;跟本地的缓存文件做比较&#xff0c;如果不一致&#xff0c;才会加载整个文件。从而节省流量。 避免重复加载整个“.pcd文件&#xff0c;以最大…