说明:

  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

Springboot jar 打包脚本和启动脚本的更多相关文章

  1. Springboot 打包自带启动脚本

    一直以来,我都是 gradlew build java -jar xxx.jar 来启动springboot项目的.今天突然发现,springboot自动封装了一个bootJar的任务脚本. demo ...

  2. Shell脚本 - nginx启动脚本

    OS:CentOS/Redhat 系列 并在 Centos 6.7 和 Centos 7.2 上测试正常 #!/bin/bash # # auth: daxin # time: 2018/07/10 ...

  3. [转]Ubuntu下添加开机启动脚本

    作者: 王恒 发表于 2012年 11月 5日 1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中 ...

  4. Linux_自制系统服务启动脚本

    目录 目录 前言 Case语句 Apache 启动脚本 Postfix service 启停脚本 前言 在Linux的某些系统服务中,需要自己定制启动服务的脚本.通常会使用Cash语句来实现. Cas ...

  5. SpringBoot项目打包成jar后,启动脚本

    将springboot项目打包成jar后,上传至服务器,每次都需要手敲命令,重新部署项目,可将这些命令写入脚本中,直接运行. 启动脚本(start.sh): CUR_PATH=$(cd "$ ...

  6. (转)springboot应用启动原理(一) 将启动脚本嵌入jar

    转:https://segmentfault.com/a/1190000013489340 Spring Boot Takes an opinionated view of building prod ...

  7. 一篇关于Maven项目的jar包Shell启动脚本

    使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...

  8. spring boot打包,依赖、配置文件分离,拷贝启动脚本

    一.最终打包的目录结构 二.项目结构 三.开始 1.最终打包的目录,可根据自己需要修改. <properties> <mzservice.path>${project.buil ...

  9. Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)

    本文介绍如何打包Qt程序,使其在没有安装Qt的系统可以运行. 默认前提:另外一个系统和本系统是同一个系统版本. 1,编写导出依赖包的脚本copylib.sh #!/bin/bash LibDir=$P ...

  10. Tomcat启动脚本catalina.sh

    1 - 概述脚本catalina.sh用于启动和关闭tomcat服务器,是最关键的脚本另外的脚本startup.sh和shutdown.sh都是使用不同的参数调用了该脚本该脚本的使用方法如下(引自该脚 ...

随机推荐

  1. zabbix如何修改web字体

    1.拷贝一个你喜欢的字体到zabbix-server的/usr/share/zabbix/assets/fonts目录下 2.cd  /usr/share/zabbix vim include/def ...

  2. EF特性

    1.EF的 Dbcontext有延迟查询得特性,(用using后就释放了.)在绑定得时候以及失效了.解决办法是toList().toList()是立即查询.但是toList()也有他的问题. 2.释放 ...

  3. 2022-04-20内部群每日三题-清辉PMP

    1.一个项目已经支出350万美元,现在已经完成400万元美元的工作.该项目的计划价值(PV)为800万美元.主题专家(SME)估算还需要600万美元来完成该项目.完成该项目的技术方法不再有效.当前的完 ...

  4. Java基础——(综合练习)选手打分

    package com.zhao.test; import java.util.Scanner; public class Test17 { /* 需求 : 在唱歌比赛中,有6名评委给选手打分,分数范 ...

  5. 下载低版本Xcode方法

    1.浏览器打开下面链接 https://developer.apple.com/download/all/ 2.没登录需要登录appid账号 3.搜索想要下载的xcode版本号 4.点击下载即可

  6. 1、PyTorch基本操作

    一.简介 简单介绍PyTorch框架,基本使用和安装方法.Torch是什么?一个火炬!其实跟Tensorflow中Tensor是一个意思,就是说,有一批数据,无论是图像数据还是文本数据或数值数据,都需 ...

  7. OutLook从excel导入联系人

    1.将已有的excel打开-->另存为-->csv格式 2.用记事本打开 .CSV 文件,选择"文件"-"另存为",修改为  ANSI编码后,然后导 ...

  8. 计算机网络复习小结(3)-IPv4

    IPv4分组 一个IP分组由首部和数据两部分组成,首部前一部分的长度固定,共20B,是所有IP分组必须具有的.在IP数据报首部中有三个关于长度的标记,一个是首部长度,一个是总长度,一个是片偏移,基本单 ...

  9. SQL注入绕过某waf的详细过程。

    0x00起因 看到大家都有绕waf的payload,想了想,这样下去不行啊.总不能找人家要吧,于是我开启了电脑,开始我的bypass之路. 0x01过程 准备完毕后,开始,首先判断注入and 1=1 ...

  10. 【转载】Python 在已存在的excel表格中写入数据

    由于每天都要汇总日报数据,其实就是个复制粘贴的工作,将多个表的数据汇总成一个表格,工作较枯燥,于是想到用Python帮我完成这个简单又粗糙的工作.写一下我学到的几个小技巧,下次忘记怎么使用的时候,还能 ...