基于Maven打包部署spring boot项目,在网上大部分都是:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <mainClass>${start-class}</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
问题是打包后整个项目是jar,它所依赖的其它jar也会包含进去,导致整个项目很大,每次更新项目都得整个jar包更新,很麻烦。
那有没有一种方式是把项目依赖的jar单独出来?在部署更新项目时,只需要更新项目自身代码,不用更新依赖包。
项目jar包解压出来后的目录结构:
解决方法就是,在pom中改用以下配置:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <layout>ZIP</layout> <minimizeJar>true</minimizeJar> </configuration> </plugin>
打包后得到的项目tboot.jar,拷贝lib出来,然后直接从jar中删除lib及目录下的依赖包
这样得到我们的业务代码,部署到Linux服务器上,lib依赖包单独存放:
启动项目的命令:java -Dloader.path="lib/" -jar tboot.jar
项目正常运行
另外附上后台后台启动的方式,已经编写好shell脚本startup.sh(该脚本文件跟项目tboot.jar放同一目录下):
#!/bin/sh #功能简介:启动上层目录下的jar文件 #参数简介: # $1:jar文件名(包含后缀名) # 注意:jar文件必须位于startup.sh目录的上一层目录。 #启动参数 JAVA_OPTS="-server -Xms400m -Xmx400m -Xmn300m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xverify:none -XX:+DisableExplicitGC -Djava.awt.headless=true" jar_name=$1 this_dir="$( cd "$( dirname "$0" )" && pwd )" parent_dir=`dirname "${this_dir}"` log_dir="${parent_dir}/logs" log_file="${log_dir}/catalina.out" jar_file="${jar_name}" #依赖包目录(相对路径) lib_dir="lib/" #参数个数<1或者参数空值时,中断执行 if [ $# -lt 1 ] || [ -z $1 ]; then echo -e "\033[31m请输入要部署的jar包名称!\033[0m" exit 1 fi #日志文件夹不存在,则创建 if [ ! -d "${log_dir}" ]; then mkdir "${log_dir}" fi #父目录下jar文件存在 if [ -f "${jar_file}" ]; then #启动jar包;重定向标准错误输出到文件,丢掉标准输出 java $JAVA_OPTS -Dloader.path=${lib_dir} -jar ${jar_file} 1>/dev/null 2>"${log_file}" & exit 0 else echo -e "\033[31m${jar_file}文件不存在!\033[0m" exit 1 fi
补充:Maven打可执行Jar包的插件配置(基于Dubbo)
相关推荐
在本文中,我们将深入探讨如何将Spring Boot项目部署到中创中间件(InforSuite AS)上,并解决可能出现的中文乱码问题。首先,我们需要理解Spring Boot和中创中间件的基本概念。 Spring Boot是由Pivotal团队提供的...
要打包和部署Spring Boot项目,可以按照以下步骤进行: 1. 打包项目: - 在项目根目录下使用命令行或终端运行以下命令打包项目 - 这将使用Maven构建工具进行项目的打包,并生成一个可执行的JAR文件 2. 部署项目: ...
这个“spring boot 所有‘demo,打包下载’”的资源集合是一个极好的学习材料,涵盖了 Spring Boot 的多个关键领域,包括 JPA、Tomcat、Cache、Ant、Hibernate 4、Jetty、WAR 包、Web 开发和 XML 配置。 1. **...
在Spring Boot中,"快速入门"通常指的是新手或初学者对Spring Boot的基本认识和基础使用,能够快速构建和部署一个Spring Boot应用程序。 ### Spring Boot概述 #### 1.1. 什么是Spring Boot Spring Boot是Spring...
Spring Boot 旨在提供快速应用开发所需的“一站式”解决方案。其目标是简化新Spring应用的初始搭建以及开发过程。 ##### 一、Spring Boot文档概述 **1. 关于本文档** 本文档旨在帮助初学者快速掌握Spring Boot的...
5.daemon-linux-zip.xml --主要用于打包的配置 备注:1,2,3这三个文件放在工程的src的bin目录下,在linux下执行的时候可能会提示找不到文件,例如start.sh:只需要vim start.sh,然后:set ff=unix,最后:wq即可 5文件...
通过以上步骤,开发者可以构建一个集成了MyBatis、Redis和ActiveMQ的Spring Boot应用,并进行打包部署,以实现数据持久化、缓存管理和消息队列等功能,提高系统的性能和可扩展性。在实际操作中,还需要考虑安全性、...
Spring Boot 应用打包成 WAR 包部署 Spring Boot 应用打包成 WAR 包部署是将 Spring Boot 应用程序打包成 WAR 文件,以便于部署到外部 servlet 容器中。在本文中,我们将详细介绍如何将 Spring Boot 应用程序打包成...
"Spring Boot 项目与 Vue 一起部署到 Tomcat 服务器" 在本文中,我们将介绍如何将 Spring Boot 项目和 Vue 一起部署到 Tomcat 服务器中。这个过程需要我们对 Tomcat 服务器进行配置,以便能够正确地部署并运行我们...
书中会介绍如何打包Spring Boot应用为可执行JAR,以及如何在这些平台上部署和管理应用。 最后,你将学习到如何监控和管理Spring Boot应用,例如使用Actuator提供的健康检查、指标收集、审计日志等功能。 总的来说...
Spring Boot的出现是为了应对Spring项目日益复杂的构建和配置问题。在传统的Spring项目中,开发者需要手动添加构建路径、Maven依赖以及配置应用程序服务器。然而,Spring Boot在现有Spring框架的基础上构建,通过...
8. **部署与运行**:讨论如何打包Spring Boot应用为可执行JAR或WAR文件,以及如何在Docker容器、云平台(如Heroku)上部署应用。 9. **微服务架构**:可能涉及如何使用Spring Cloud构建微服务,包括服务发现、配置...
Spring Boot 是一个由 Pivotal Team 开发的用于简化 Spring 应用程序初始搭建以及开发过程的框架。它集成了大量常用的第三方库配置,如 ...对于初学者,理解并解决这些问题有助于深入掌握 Spring Boot 及其部署实践。
整体而言,Spring Boot中文文档为读者提供了从基础到高级的详细指南,涵盖了安装、开发、运行和部署Spring Boot应用的方方面面。文档的深度和广度对于初学者和有经验的开发者都具有相当的价值,是学习和使用Spring ...
1. 独立运行:Spring Boot项目可以打包成一个包含所有依赖的可执行jar包,可以独立运行无需部署到外部的Servlet容器中。 2. 简化配置:通过spring-boot-starter-web等启动器自动配置依赖项,减少了Maven配置的工作量...
文档是学习和掌握Spring Boot不可或缺的资源,文档中的各个部分详细介绍了如何从零开始安装、配置和使用Spring Boot,以及如何进行项目开发、打包、测试和部署。文档中还包含了常见问题的解答,帮助开发者快速上手和...
Spring Boot支持内嵌Tomcat、Jetty或Undertow等Web服务器,开发者无需单独打包部署,大大简化了应用的发布流程。 4. **Actuator(监控与健康检查)** Actuator提供了一系列的端点(endpoints)用于监控和管理应用...
Spring Boot支持内嵌Tomcat、Jetty或Undertow web服务器,无需额外进行打包和部署,使得应用可以直接以jar形式运行。 ### 四、健康检查与Actuator Actuator是Spring Boot提供的一个模块,用于提供应用的健康检查、...