您的位置:首页 > 编程语言 > Java开发

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

2019-04-10 17:37 615 查看

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

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

1. war包结构分析

1. war包解压


war包结构主要有两个目录.WEB-INF 和META-INF.
WEB-INF使用web 项目才会有这个文件夹,普通的j2se项目是没有这个文件夹的。

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

(1). WEB-INF包解压


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

(2)MATE-INF解压


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包类似于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 就可以运行。

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

3.添加资源文件

<resource>
<directory>${basedir}/src/main/java</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>

打包之后项目既可以只有java代码和资源包,清晰明了.

4.主要问题

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

1.修改pom文件添加resource节点

2.修改application.properties文件

3.修改springmvc配置文件添加资源文件

看懂打包目录结构,遇到问题都可以快速解决.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: