说明:

  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. python如何实现对word内段落文本及表格的读取

    在以下方法中用到的三方库是:python-docx from docx import Document 获取指定段落的文本 def get_paragraph_text(path, n): " ...

  2. golang基本数据类型

    1.整形 默认整数类型为int 变量在选择时应遵循最小化原则 1.1 有符号(int) 类型 取值范围 占用空间(字节) int8 -2^7到 2^7-1 (-128到127) 1 int16 -2^ ...

  3. Mysterious-GIF --- 攻防世界WP

    题目描述: 附件: ps:我重命名了一下为 cindy,gif 解题过程 1.分析该GIF (1)查看图片属性 (2)strings命令查找字符串 (3)winhex查看 (4)因为是GIF,所以可使 ...

  4. Safari浏览器如何收藏网页?

    Safari浏览器是MacOS所自带的一款功能强劲的浏览器,许多MacOS的用户在使用过Safari浏览器后就不会去下载其他浏览器了.对于很多Mac新手用户来说,如何使用Safari浏览器来收藏喜欢的 ...

  5. idea使用EasyCode集成ruoyi框架自动生成代码

    1.ruoyi框架源码获取 https://gitee.com/zhangmrit/ruoyi-cloud/tree/nacos/ 2.需要ruoyi调整部分代码 public class BaseC ...

  6. vue v-for 循环中,下拉框 el select 设置初始值 v-model

    效果图: 2.解决思路是,v-model 赋值 单独创建一个数组,然后用于接收下拉框的值,然后提交的时候,将这个数组的值,放到提交的数组中. 3.参考: 解决v-for中遍历多个el-select时, ...

  7. 【STM32】TIM定时器

    TIM定时器(TIM3为例) 初始化: A:结构体TIM_HandleTypeDef的成员: 1.*Instance:类型为TIM_TypeDef,即对TIM的寄存器的映射,通过这个成员可以操作寄存器 ...

  8. docker部署服务器

    Docker部署PostGres docker run -d --name postgres --restart always -e POSTGRES_USER='postgres' -e POSTG ...

  9. 接口自动化(TestNG)

    数据驱动概念: 用户输入输出数据来判断测试用例是否通过从而验证需求的测试. 一.接口自动化框架搭建(TestNG数据驱动) ---parameter 关键代码: <?xml version=&q ...

  10. mysql允许root用户在任何地方进行远程登录,并具有所有库任何操作权限

    在本机先使用root用户登录mysql: mysql -u root -p"youpass" 进行授权操作: mysql>GRANT ALL PRIVILEGES ON *. ...