Spring Boot 打包与热部署的操作方法

热部署

Spring Boot提供了DevTool。直接在pom.xml文件中添加配置。

1.添加依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
</dependency>

2.在maven插件依赖中新增

<build>
	<plugins>
	 	<plugin>
			<groupId>org.springframework.boot</groupId>
		  <artifactId>spring-boot-maven-plugin</artifactId>
		  <!--添加fork-->
		  <configuration>
		  	<fork>true</fork>
		  </configuration>
	  </plugin>
	</plugins>
</build>

提示:再使用Idea快捷创建Spring Boot项目时可以勾选Spring Boot DevTools选择即可。

修改Idea设置


注意:这里要用Idea的debug启动,debug启动,debug启动。

如果不是前后端分离的项目,在配置文件中添加配置,spring.thymeleaf.cache=false关闭页面缓存。

jar包




选中maven,点击运行。
控制台输出日志:

打的jar包在项目目录的target目录中。

Windows下运行:

进入jar包目录,执行 java -jar 包名

运行成功。

扩展:
如果打好了jar包,配置文件中的一些参数需要修改。如果不想重新打jar包。可以重新把一份新的application.yml配置文件与打好的jar包放在同级目录。重新运行即可。

验证:
从上述日志中看到,端口为80。这里我重新复制一份配置文件,将端口改为8088。重新运行查看端口。


这里是在Windows下运行,在Linux下运行差不多,
我们先把jar包,配置文件(可选)上传至服务器,运行。

啊咧,80端口已经被项目占用了。

重新上传一份8088端口的配置文件。

验证成功以后,还有一个问题,无论是Windows窗口还是Linux窗口运行的jar包,窗口关闭以后,项目进程就结束了。但是你窗口不会一直开着。

在Linux下我们需要后台运行。

nohup java -jar springboot-demo2-0.0.1-SNAPSHOT.jar >> srpingboot.log &

解释:后台运行SpringBoot的jar包,并将运行java -jar springboot-demo2-0.0.1-SNAPSHOT.jar命令的输出日志追加输出到springboot.log文件中。

划重点:

  • >> 输出到文件,追加操作。
  • > 输出到文件,覆盖操作。
  • & 在Linux命令的末尾加上一个 & 号,将这个任务放到后台去执行
  • nohup no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
  • 这些都是一些Linux命令,可以自己敲一敲测试即可。

后台运行,如何关闭?直接kill。kill -9 pid(运行项目进程的PID)

war包

SpringBoot不推荐打war包,但是你说我头铁,非要打war包咧?可!

修改pom.xml

<!-- 将jar改成war,如果没有,则添加-->
<packaging>war</packaging>
<!-- 新增 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-tomcat</artifactId>
	<!-- 打包运行时,排除 -->
	<scope>provided</scope>
</dependency>

注意这两处的节点位置。

修改启动类

此时启动类中的main方法已经失效了。以测试项目为例

@SpringBootApplication
@MapperScan("com.demo.dao")
public class SpringbootDemo2Application extends SpringBootServletInitializer {

  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(SpringbootDemo2Application.class);
  }

  public static void main(String[] args) {
    SpringApplication.run(SpringbootDemo2Application.class, args);
  }

}

继承SpringBootServletInitializer类并重写configure方法。注意方法体的书写。

接下来就继续使用maven打包即可。参数上面打jar的使用maven方式。

打好的war包是需要放在容器中执行的,简单的就放在Tomcat中的webapps目录中。启动Tomcat即可。

war包已经打好了,直接丢Tomcat了。

启动Tomcat即可。

但是在实际开发中,还是不推荐打war包。

到此这篇关于Spring Boot 打包与热部署的操作方法的文章就介绍到这了,更多相关Spring Boot 打包与热部署内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot+Maven 多模块项目的构建、运行、打包实战

    本篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包,分享给大家,具体如下: 项目使用的工具: IntelliJ IDEA JDK 1.8 apache-maven-3.3.9 项目的目录: 主项目 springboot-multi 子模块 entity.dao.service.web 一.使用IDEA创建一个SpringBoot项目 : File -> new -> Project 项目名称为springboot-multi 二.删除项目中的src目录,把pom.

  • spring boot 打包jar jar没有主目录清单问题的完美解决方法

    1.在POM.xml文件下添加如下代码:注意:version.configuration.executions三个标签是我后来查找添加的,网上解决方案要么没有这三个要么不一样,我试了都不行,而且我在我电脑试了这三个标签必须有: 2.如果没有version标签会在生成时会报错. 3.如果没有configuration.executions两个标签生成的jar会报jar没有主目录清单错误: 哀  折腾一天,没办法谁让自己是小白那.还有一个主意的:packaging标签页必须有: <packaging

  • 详解SpringBoot配置devtools实现热部署

    spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtools的原理 深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个r

  • Spring boot实现热部署的两种方式详解

    热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的 Class 文件,这个文件里记录着和代码等对应的各种信息,然后 Class 文件将被虚拟机的 ClassLoader 加载. 而热部署正是利用了这个特点,它监听到如果有 Class 文件改动了,就会创建一个新的 ClaassLoader 进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前. 类加载机制 Java 中的类经过编译器可以把代

  • springboot + devtools(热部署)实例教程

    技术介绍 devtools:是boot的一个热部署工具,当我们修改了classpath下的文件(包括类文件.属性文件.页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现这个启动比较慢,可以选择使用jrebel) 双类加载器机制:boot使用了两个类加载器来实现重启(restart)机制:base类加载器(简称bc)+restart类加载器(简称rc). bc:用于加载不会改变的jar(eg.第三方依赖的jar) rc:用于加载我们正在开发的jar(eg.整个项目里

  • spring boot打包成可执行jar包

    在使用spring boot进行打包的时候出现了一些问题,不是说找不到主类,就是说spring初始化时有些类没有加载. 下面介绍一下如何解决. <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> &

  • 如何把vuejs打包出来的文件整合到springboot里

    这个需求不知道是不是合适,因为静态的vuejs项目,用nginx部署,听说很快. 一般有这个需求的,都是用tomcat来部署java项目,tomcat转发静态vuejs,应该不会很快. 好吧,以上都是听说...应该...实际嘛?... 废话不多讲,马上搞起. 这里第一句要说的是,目前这个方式我认为只支持#这个方式的路由,如果改成了html5的mode: 'history',应该是不支持的. 开始准备: 注意,我的springboot用的视图模板是thymeleaf,静态文件夹路径默认是resou

  • Spring Boot 打包与热部署的操作方法

    热部署 Spring Boot提供了DevTool.直接在pom.xml文件中添加配置. 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 2.在maven插件依赖中新增 <build> <plugins> <

  • Spring Boot打包war jar 部署tomcat

    概述 1.Spring Boot聚合工程打包war部署Tomcat 2.Spring Boot打包Jar,通过Java -jar直接运行. 3.提供完整pom.xml测试项目 至github 解决问题 1.xxxx中没有主清单属性 2.解决没有web.xml而报错 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project provider: E

  • Spring Boot 开发环境热部署详细教程

    在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译.然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是影响开发效率.其实Spring Boot的项目碰到这种情况,同样也同样需要经历重新编译.重新启动程序的过程. 只不过 Spring Boot 提供了一个spring-boot-devtools的模块,使得 Spring Boot应用支持热部署,无需手动重启Spring Boot应用,,提高开发者的开发效率.接下来,聊一聊Spring Boot 开发环境热部署

  • Spring Boot 应用的热部署配置方法

    目录 Spring Boot 项目之热部署配置 前言 IDEA 配置 Spring Boot 项目配置 测试 后话 Spring Boot 项目之热部署配置 前言 所谓热部署,简单来说,就是代码修改后不需重启项目就可自动加载出新的内容. 注意:热部署在 debug 调试模式下才生效! IDEA 配置 1.在 IDE(IDEA)中开启相关项目自动构建选项 2.开启编译器设置中修改后自动编译的选项(下图是 IDEA 2021版本,其他版本可能在其他位置) Spring Boot 项目配置 其实就是在

  • Spring Boot打包部署和环境配置详解

    执行命令 yum -y list java* 查看可安装java版本. Failed to set locale, defaulting to C Loaded plugins: fastestmirror base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): base/7/x86_64/group_gz | 166 kB 00:00:00 (2/4): extras/7/x86_64/p

  • 猜你不知道Spring Boot的几种部署方式(小结)

    引言 本文主要讲的是spring boot的五种部署方式,里面是否有你不知道的呢,如果有欢迎评论留言哦,一起交流探讨哦!!! 可以使用各种方法将Spring Boot应用程序部署到生产系统中.在本文中,我们将通过以下5种方法逐步部署Spring Boot应用程序: 在Java Archive(JAR)中作为独立应用程序进行部署, 将Web应用程序存档(WAR)部署到servlet容器中, 在Docker Container中部署, 在NGINX Web服务器后面部署 - 直接设置, 部署在NGI

  • 详解Spring Boot 打包分离依赖JAR 和配置文件

    1:自定义路径 <properties> <!--自定义路径--> <directory>d:/im/</directory> </properties> 2:把配置文件打包出来 <build> <plugins> <!--上线部署 JAR启动分离依赖lib和配置--> <!--打包jar--> <plugin> <groupId>org.apache.maven.plugi

  • Spring Boot 打包上传Docker 仓库的详细步骤

    重要提示:学习本文之前需要提前了解docker容器相关的知识,了解和熟练运用常用的docker操作命令,如果已经了解了docker容器相关的知识那我们就开搞吧! 以下是完成标题所述功能的大致步骤: 搭建docker镜像仓库 修改Spring Boot 配置文件添加docker仓库配置,打包,上传至docker 镜像仓库 从自己搭的docker镜像仓库拉取上传的镜像文件并运行 Step1 搭建docker镜像私有仓库 搭建docker镜像仓库我们需要依赖docker-registry工具 ,doc

  • spring boot打包成war包的页面如何存放

    背景 经常有朋友问我,平时都是使用spring mvc,打包成war包发布到tomcat上,如何快速到切换到spring boot的war或者jar包上? 先来看看传统的war包样式是什么样子的? 1. 传统的spring MVC格式的war包 可以看到,webapp/resouces文件存放css/js/html等静态文件,WEB-INF存放jsp动态文件. 对应的配置文件 @EnableWebMvc //mvc:annotation-driven @Configuration @Compon

随机推荐