Springboot快速构建jar包启动web项目

Springboot快速构建jar包启动web项目

前言:传统的web项目打包方式为war包, 打成war包之后要放到tomcat的webapps目录下启动,造成不必要的麻烦.本文从war包jar包结构分析,怎么快速将war包修改为jar包启动.方便排查错误.

1. war包结构分析

1. war包解压

Springboot快速构建jar包启动web项目_第1张图片
war包结构主要有两个目录.WEB-INF 和META-INF.
WEB-INF使用web 项目才会有这个文件夹,普通的j2se项目是没有这个文件夹的。

META-INF相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务manifest.mf文件,在用jar打包时自动生成。

(1). WEB-INF包解压

Springboot快速构建jar包启动web项目_第2张图片
 WEB-INF解压发现,存储的即所有项目所需的lib(依赖jar包),jsp,静态文件,项目java文件编译之后的class文件,web.xml应用程序配置文件(描述了 servlet 和其他的应用组件配置及命名规则)等文件.

(2)MATE-INF解压

Springboot快速构建jar包启动web项目_第3张图片
MATE-INF目录主要有maven的pom.xml打包信息和MANIFEST.MF描述文件.
MANIFEST.MF内容

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Admin
Created-By: Apache Maven 3.5.2
Build-Jdk: 1.8.0_31

Springboot jar包结构分析

Springboot快速构建jar包启动web项目_第4张图片
Springboot jar包类似于war包方式,主要有三个目录,BOOT-INF,META-INF,org.
BOOT-INF即war包下的WEB-INF,存放所有的项目文件和依赖jar.
META-INF多了一些启动类信息.
org即springboot start代码.
META-INF内容

Manifest-Version: 1.0
Implementation-Title: my
Implementation-Version: 1.0
Built-By: Admin
Implementation-Vendor-Id: com.my
Spring-Boot-Version: 1.5.7.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.my.App
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_191
Implementation-URL: http://maven.apache.org

3.利用springboot的插件打jar包部署

1.修改packaging为jar包方式

2. 添加spring-boot-maven-plugin插件

在添加了该插件之后,当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行。这在很大程度上简化了应用的部署,只需要安装了 JRE 就可以运行。


        org.springframework.boot
        spring-boot-maven-plugin
 	

3.添加资源文件


   ${basedir}/src/main/java
     false
     
         **/*.xml
         **/*.properties
     
 

打包之后项目既可以只有java代码和资源包,清晰明了.
Springboot快速构建jar包启动web项目_第5张图片

4.主要问题

修改过程中主要会遇到静态资源404的情况.
解决:

1.修改pom文件添加resource节点
Springboot快速构建jar包启动web项目_第6张图片
2.修改application.properties文件
在这里插入图片描述
3.修改springmvc配置文件添加资源文件
Springboot快速构建jar包启动web项目_第7张图片
看懂打包目录结构,遇到问题都可以快速解决.

你可能感兴趣的:(java,Springboot)