SpringBoot 为当前最流行的JAVA框架 , 内嵌了 Tomcat 服务器 , 我们不用再像以前 Spring 那样打包成 war , 然后将 war 扔到 tomcat 中运行 。 我们现在可以直接将 SpringBoot 项目打包为一个内置 tomcat 的可运行 jar , 通过 java -jar xxx.jar 直接运行 (方便易用) 。
打包 SpringBoot 的方式有很多
- 使用 Maven打包 jar (主流)
- 使用各种开发工具打包Jar . 如 : idea , eclipse 等等 。
这里我们使用主流的Maven方式
1、在pom.xml中添加SpringBoot Maven插件 :
<!-- <build > 主要用于编译设置 -->
<build>
<!-- 定义打包成jar的名字 -->
<!-- 这里如果不定义 , 打包成的jar名字格式为 : <artifactId> + <version> -->
<finalName>thymeleaf</finalName>
<plugins>
<!--SpringBoot maven插件-->
<!-- 可以将应用打成一个可执行的jar包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 设置启动入口 -->
<!-- manClass即使不配置 , SprinBoot也在打包的时候也清楚入口是哪个 , 其实不用配置 -->
<configuration>
<mainClass>com.bella.ThymeleafApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
2、进入项目目录
- 通过开发工具进入项目 (如 : idea Terminal)
- 使用 Dos / Shell 进入项目目录
3、执行打包命令
mvn clean package -Dmaven.test.skip=true
Maven 打包成功后 , 可以通过控制台日志查看 Jar 的位置 . ( 如上图 )
- Building jar : jar的绝对路径
4、运行jar
- 打开Dos控制台 (cmd)
- 进入 jar 目录 (cd jar绝对路径)
- 运行jar (java -jar xxx.jar)
异常解决
1、 打包成功,运行jar报错 : 没有注清单属性
出现这种情况的原因 :
你的pom.xml 没有引入 SpringBoot Maven插件 . (第一步 在pom.xml中添加SpringBoot Maven插件 )注意 : 即使你没有引入 SpringBoot Maven 插件也可以构建成功。是因为 maven 本身可以构建成功。但是Maven并不知道你的项目入口在哪里。这就是为什么要引入 SpringBoot maven 插件的原因。
2、打包失败
这个错误的意思 :
maven 打包jar的时候是要覆盖之前的jar的。但是maven发现之前的jar正在被使用 , 无法进行删除覆盖操作。
解决办法 :
这种情况一般是因为此 jar 被打开 或者 被 启动中。 我们只要关闭了使用他的程序即可。 比如 : 关闭启动他的 DOS 窗口。 关闭打开他的压缩工具等等。
3、访问Action跳转View找不到
我这里使用的是 SpringBoot + thymeleaf . 当访问某个Action地址服务器进行视图跳转的时候报错 : 找不到该页面 .
比如 : 我访问 http://127.0.0.1:1118/index
导致这个错误的原因 :
SpringMVC 返回视图的时候 , 页面目录前面多加了一个 “/” 如 : return “/index”;
像上面返回视图时多加了一个 “/”
你在用idea直接启动 SpringBoot 项目访问页面的时候没有问题
打包成 jar 访问就找不到页面
具体为什么 ? 没有细致研究。 反正去掉 “/” 就可以了。 也不影响idea的开发。
知识扩展
- SpringBoot 启动命令大全
- SpringBoot Maven 打包命令大全
项目源码