将springboot web应用打包为jar

本文介绍如何使用SpringBoot将Web应用打包成可独立运行的jar包,包括配置与执行过程,并对比fatjar与普通jar的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常情况下,对于一个 web应用,例如我们之前使用到的 hello应用,在部署的时候,我们会将其打包成一个 war包,然后部署到tomcat下面。
在使用了 SpringBoot之后,我们可以将应用打包为一个可以运行的 jar包,同样可以运行这个应用,因为 tomcat已经内嵌在我们的程序中了,因此我们并不需要将 hello应用打成war 包,然后再部署。

通常我们将一个可以运行的 jar包称之为fat jar 。因为这样的 jar包内部通常包含了自己运行时的所有依赖,也就是一个大的 jar中内部包含了自己运行时所有依赖的 jar(jar包中还有jar 包),体积比较大,所以比较 fat。

要注意的是, Java并没有提供一种标准的方式来加载“嵌套 jar”。而SpringBoot 提供了一个插件,可以帮助我们将应用打包成一个可以运行的 jar。

在pom.xml文件中加入:

  1. <build>
  2.         <!-- 将应用打包成一个可以运行的 jar -->
  3.         <plugins>
  4.             <plugin>
  5.                <groupId> org.springframework.boot </groupId>
  6.                <artifactId> spring-boot-maven-plugin </artifactId>
  7.             </plugin>
  8.         </plugins>
  9.      </build>

这段配置可以帮助我们将SpringBoot应用打包成一个可运行的jar。下面开始执行打包的操作,右击项目名 "run as =>maven build" ,在goals 中输入package:

Image.png

点击 run之后,我们可以target目录下看到类似以下的文件

Image.png

其中, springbootstudy-0.0.1-SNAPSHOT.jar是我们打包好的,内部包含了其他依赖的,可以直接运行的jar,而springbootstudy-0.0.1-SNAPSHOT.jar.original 则是原始的打包后的jar。

进入 target文件夹所在目录,我们可以看看这两个文件的区别:

Image.png

第一个可以直接运行的 jar的大小为13M 左右,而第二个只有 6KB。

通过jar tvf springbootstudy-0.0.1-SNAPSHOT.jar 命令,我们可以看到这个 jar中的内容,当然更直观的方式,你可以选择直接右击解压这个 jar文件,就会发现这个 jar的 lib目录下,实际上存放了所有依赖的 jar。而 springbootstudy-0.0.1-SNAPSHOT.jar.original 则是没有包含这些依赖的 jar的原始包。

我们可以通过命令 java -jar springbootstudy-0.0.1-SNAPSHOT.jar来直接运行这个jar,你将会在命令行看到和在Eclipse中直接运行quick start应用同样的输出内容,在浏览器中输入 localhost:8080,可以看到同样的效果。

Image.png

注意:,如果你的项目不是没有设置 parent项目为 spring-boot-starter-parent,那么spring-boot-maven-plugin的配置就要显示的指定执行阶段,如下所示

  1. <plugin>
  2.                 <groupId> org.springframework.boot </groupId>
  3.                 <artifactId> spring-boot-maven-plugin </artifactId>
  4.                 <!--如果父项目不是spring-boot-starter-parent,需要显示指定execution-->
  5.                 <executions>
  6.                     <execution>
  7.                         <goals>
  8.                             <goal> repackage</goal>
  9.                         </goals>
  10.                     </execution>
  11.                 </executions>
  12.             </plugin>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值