说明:

  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. JS正则表达式大全(整理详细且实用)2

    javascript的17种正则表达式 "^\\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^ ...

  2. ant Vue 表格列多数据溢出省略显示

    1.实现下图缩式 二次更新:通过customRender设置添加悬浮窗,不需要再设置样式,注意动态数据使用的时候是一个大括号 { title:'业务分类', align:"center&qu ...

  3. 记SpringBoot中 Consider defining a bean of type 'com.xxx.classname' in your configuration 错误的解决办法

    一.背景 笔者项目中.有两个子模块代码.需要分别在不同的包名中运行,假设一个包名为 cn.com.a,另一个包名为cn.com.b.由于启动类只加了@SpringBootApplication注解,所 ...

  4. 原生JS点击显示/隐藏

    代码实现 HTML <div class="box box1"> <div class="btn"> <span onclick= ...

  5. Java数组之数组的使用

    数组的使用 普通的for循环 For-Each循环 数组作方法入参 数组作返回值 public class ArrayDemo03 { public static void main(String[] ...

  6. Swift中 堆(heap)和栈(stack)的区别

    1.内存空间分为堆空间和栈空间 2.堆->引用类型(对象.函数.闭包)  栈->值类型(结构体.枚举.元组) 3.值类型赋值->深拷贝  引用类型赋值->浅拷贝 let a = ...

  7. Text文件颜色渐变

    using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEngine.UI;usi ...

  8. centos7最小化系统安装(ifconfig找不到)

    先我们安装后centos7最小化系统后,并进入系统执行命令ifconfig,会发现系统提示命令未找到.具体展示效果如下图所示. 然后输入命令查看本机是否分配IP,执行命令ip addr ,可以发现系统 ...

  9. C#定时任务(Timer)

    新建Timer类 using BaseAsset.Data.Infrastructure; using BaseAsset.Data.Repositories; using BaseAsset.Ent ...

  10. sqlmap-1.6.12.11

    Usage: sqlmap.py [options] 选项: -h, --help 显示基本帮助信息并退出 -hh 显示高级帮助信息并退出 --version 显示程序的版本号并退出 -v VERBO ...