下面要给大家介绍的就是spring boot jar和war以及目录的打包和启动方面的内容,对这方面不是很清楚的小伙伴可以来详细的了解一下。
jar方式打包
pom配置
<!-- 父moudle ---> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <!-- jar方式打包 --> <pakaging>jar</packaging> <build> <plugins> 父moudle spring-boot-starter-parent中管理了该插件直接配置使用 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
打包完成之后,生成的jar包
包含 lib 2019/03/25 10:12 19,920,734 spring-boot-webflux-1.0-SNAPSHOT.jar 仅仅打包的moudle 2019/03/25 10:12 7,129 spring-boot-webflux-1.0-SNAPSHOT.jar.original
spring-boot-webflux-1.0-SNAPSHOT.jar包所含的文件如下图所示
org目录下面是spring boot的类;Meta-inf目录下面是jar的元信息的描述;boot-info包含了jar启动要用的lib以及classes;
Meta-inf目录下面是jar的元信息的描述
在Java当中,Manifest文件的作用和properties文件类似,用键值对的形式保存配置信息。
在jar规范当中,存在着一个MANIFEST.MF,在这当中有一个Main-Class属性,jar包启动的时候会通过Manifest类去读MANIFEST.MF里的属性,API:java.util.jar.Manifest#getAttributes JarLauncher类继承了ExecutableArchiveLauncher类中的getMainClass方法。
MANIFEST.MF的文件
boot-inf文件下包含了lib和classes文件
spring boot包含了JarLauncher启动类
war包启动
把项目打包成war包,可以放到独立的web容器当中
例-tomcat
pom配置
war包启动 < packaging > war < /packaging> < dependencies > <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> < /dependencies> < build > <plugins> 打 war包插件-----父moudle spring-boot-starter-parent中管理了该插件直接配置使用 <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> < /build>
除了jar或者是war启动的方式之外,还有目录启动方式
目录启动方式能够帮助解决老旧的jar不支持Spring Boot新方式,例-老版本的mybatis
假如是jar包,解压之后,跳转解压目录,并且执行java命令启动,启动类是 org.springframework.boot.loader.JarLauncher
假如是war包,解压之后,跳转解压目录,并且执行java命令启动类是org.springframework.boot.loader.WarLauncher
以上的内容你都清楚了吗?想了解更多相关知识,请继续通过奇Q工具网的常见问题栏目来进行了解吧。
推荐阅读: