基于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项目和vue一起放在tomcat部署,spring boot项目和vue一起放在tomcat部署
5.daemon-linux-zip.xml --主要用于打包的配置 备注:1,2,3这三个文件放在工程的src的bin目录下,在linux下执行的时候可能会提示找不到文件,例如start.sh:只需要vim start.sh,然后:set ff=unix,最后:wq即可 5文件...
要打包和部署Spring Boot项目,可以按照以下步骤进行: 1. 打包项目: - 在项目根目录下使用命令行或终端运行以下命令打包项目 - 这将使用Maven构建工具进行项目的打包,并生成一个可执行的JAR文件 2. 部署项目: ...
主要介绍了Spring Boot打包部署和环境配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Spring Boot是一个开发框架,目的是简化Spring应用的初始搭建过程和开发过程,它提供了默认的代码和注解配置,简化了开发过程,它可以与MyBaties、Redis、ActiveMQ等多种技术进行集成使用,简化了项目开发的过程
Spring Boot实战与原理分析视频课程包含14-18,本视频教程为网络整理,如有侵权,请联系删除。谢谢 Spring Boot实战与原理分析视频课程 ...27 Spring Boot 应用的打包和部署35:41 --两种方式演示服务的打包,部署,运行
springboot应用打包成war包部署
spring boot小例子,直接打包成war包,部署到tomcat下,不过还有点小问题,后面需修改
主要介绍了Springboot基于assembly的服务化打包方案及springboot项目的几种常见的部署方式,本文主要针对第二种部署方式提供一种更加友好的打包方案,需要的朋友可以参考下
主要给大家介绍了关于spring Boot打包部署到远程服务器的tomcat中的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发、调试、打包到最后的投产上线,感兴趣的朋友一起看看吧
主要给大家介绍了关于spring boot项目打包成war在tomcat运行的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
其次,Spring Boot支持内嵌的Servlet容器(如Tomcat、Jetty、Undertow等),这意味着你可以将应用程序打包为一个可执行的JAR文件,并直接运行,无需单独安装和配置外部容器。这大大简化了应用的部署过程,提高了开发...
网上流行的解决方案是将assetsPublicPath: ‘/’改成’./’,下面说一下这个解决方案的...Vue项目部署在Spring Boot出现的另一个常见问题是当刷新浏览器的时候出现white label, 也就是404错误,解决的方案基本是把er
Spring Boot 入门 以及微服务的简单介绍,spring boot 打包部署 等简单功能介绍 Part 1. Spring Boot introduce Part 2. Prepare environment Part 3. First Spring boot demo project Part 4. Muliple ...
Linux下SpringBoot/SpringCloud微服务部署Shell,对微服务jar进行部署,格式如下: sh spring-boot.sh $OPERATION jar包.jar --spring.profiles.active={自定义} OPERATION支持start、stop、status
1.spring boot 不支持jsp打jar包,jsp只能打war包. 方法: <packaging>war <groupId>org.springframework.boot <artifactId>spring-boot-maven-plugin 2.tomcat版本不能太新,太新容易不...
Spring Boot技术架构是一个全面而强大的框架,用于构建现代应用程序。该架构涵盖了前端、代理、API网关、业务服务、中间件、数据存储、持续集成和容器服务等关键组件,以提供完整的应用程序解决方案。 前端是用户与...
主要介绍了Spring Boot打包war jar 部署tomcat的相关资料,需要的朋友可以参考下
Spring Boot使用“习惯优于配置”的理念,简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题。使用Spring Boot可以不用或者只需要很少的Spring配置就可以让企业项目快速运行起来。