基于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中,"快速入门"通常指的是新手或初学者对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 项目与 Vue 一起部署到 Tomcat 服务器" 在本文中,我们将介绍如何将 Spring Boot 项目和 Vue 一起部署到 Tomcat 服务器中。这个过程需要我们对 Tomcat 服务器进行配置,以便能够正确地部署并运行我们...
书中会介绍如何打包Spring Boot应用为可执行JAR,以及如何在这些平台上部署和管理应用。 最后,你将学习到如何监控和管理Spring Boot应用,例如使用Actuator提供的健康检查、指标收集、审计日志等功能。 总的来说...
8. **部署与运行**:讨论如何打包Spring Boot应用为可执行JAR或WAR文件,以及如何在Docker容器、云平台(如Heroku)上部署应用。 9. **微服务架构**:可能涉及如何使用Spring Cloud构建微服务,包括服务发现、配置...
4. **容器化**:深入探讨如何将 Spring Boot 应用容器化,使用 Docker 和 Kubernetes 进行部署。 5. **故障排查与日志分析**:提供关于如何调试和分析 Spring Boot 应用的技巧,以及日志管理和分析工具的使用。 6....
Spring Boot的出现是为了应对Spring项目日益复杂的构建和配置问题。在传统的Spring项目中,开发者需要手动添加构建路径、Maven依赖以及配置应用程序服务器。然而,Spring Boot在现有Spring框架的基础上构建,通过...
这个“spring boot 所有‘demo,打包下载’”的资源集合是一个极好的学习材料,涵盖了 Spring Boot 的多个关键领域,包括 JPA、Tomcat、Cache、Ant、Hibernate 4、Jetty、WAR 包、Web 开发和 XML 配置。 1. **...
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支持内嵌Tomcat、Jetty或Undertow等Web服务器,开发者无需单独打包部署,大大简化了应用的发布流程。 4. **Actuator(监控与健康检查)** Actuator提供了一系列的端点(endpoints)用于监控和管理应用...
文档是学习和掌握Spring Boot不可或缺的资源,文档中的各个部分详细介绍了如何从零开始安装、配置和使用Spring Boot,以及如何进行项目开发、打包、测试和部署。文档中还包含了常见问题的解答,帮助开发者快速上手和...