使用maven和fat jar/war运行应用程序的对比 简介 上篇文章我们介绍了Spring boot的fat jar/war包,jar/war包都可以使用 java -jar 命令来运行,而maven...Spring Boot Maven Plugin 上篇文章我们提到了Spring Boot Maven Plugin,通过使用该插件,可以有效的提高部署效率,并打包成为fat jar/war包。...在打包成fat jar/war包的时候,背后实际上做了如下的事情: 管理了classpath的配置,这样我们在运行java -jar的时候不用手动指定-cp 。...使用了自定义的ClassLoader来加载和定位所有的外部jar包依赖。并且所有的依赖jar包已经被包含在这个fat包里面了。...如果想打包成fat jar/war, 需要使用Maven Spring Boot plugin,如下所示,否则打包出来的jar包并不包含外部依赖:
从Spring-boot-maven-plugin谈起 对于SpringBoot打包的jar文件,只需要通过jar -jar一行命令便可以启动一个web项目,那springboot是如何做到的呢,这需要从...对于SpringBoot项目,我们会在pom.xml文件添加打包插件spring-boot-maven-plugin,那么执行打包的时候,会生成相应的jar文件,比如: spring-boot-hello...-0.0.1-SNAPSHOT.jar 打开上面jar的文件可以发现有如下东西: 通过查阅资料和学习,可以发现,Spring-boot-maven-plugin完成了几件对打包重要的事情: 1、生成核心的文件...MANIFEST.MF; 2、把依赖的jar包进行打包; 在jar包里打包进去了别的jar包,这样的jar成为fat jar,也叫作uber jar。...总结 Spring Boot应用打包之后,生成一个Fat jar,包含了应用依赖的jar包和Spring Boot loader相关的类。
介绍 在很久很很久以前,我们部署web程序的方式是怎么样的呢?配置好服务器,将自己写的应用程序打包成war包,扔进服务器中指定的目录里面。当然免不了要配置一些负责的xml和自定义一些servlet。...现在有了spring boot,一切都变了,我们可以将web应用程序打包成fat jar包,直接运行就行了。 本文将会关注于怎么使用Spring Boot创建一个fat jar包。...如果你要在服务器上面永久运行该服务,即使登录的用户退出服务器,则可以使用nohup命令: nohup java -jar fat jar和 fat war 在上面的例子中...,所有的依赖jar包都会被打包进入这一个fat jar中,如果你使用了tomcat,那么tomcat也会被打包进去。...但有时候我们还是需要打包成war包,部署在服务器中,这种情况只需要将pom.xml中的packaging属性修改为war即可。
文章目录 Pre 引导 新建工程 打包 启动 java -jar 干啥的 打包插件 spring-boot-maven-plugin简介 包结构 META-INF内容 Archive的概念 JarFile...---- 打包插件 事实上,Java没有提供任何标准的方式来加载嵌套的jar文件 (jar中包含jar ,即Spring Boot 中的fat jar) Spring Boot 默认的打包插件如下:...spring-boot-maven-plugin简介 spring-boot-maven-plugin项目存在于spring-boot-tools目录中。...spring-boot-maven-plugin的repackage能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为.original*...通过spring-boot-plugin 生成了MANIFEST.MF , main-class 指定运行java -jar的主程序把依赖的jar文件 打包在fat jar. ?
一、创建基于Spring Boot框架的可执行Jar包 Spring Boot开发的应用可以打包为单独的JAR包,然后通过java -jar .jar命令运行。...Note:Uber JAR是将应用程序打包到单独的jar包中,该jar包包含了应用程序依赖的所有库和二进制包。...运行Jar启动Java web应用 分析 如上所示,打包成可执行的jar包这种方法相当直观,背后的工作由spring-boot-maven-plugin插件实现:先通过maven-shade-plugin...生成一个包含依赖的jar,再通过spring-boot-maven-plugin插件把spring boot loader相关的类,还有MANIFEST.MF打包到jar里。...总结下Spring Boot应用的启动流程:(1)spring boot应用打包之后,生成一个fat jar,里面包含了应用依赖的jar包,还有Spring boot loader相关的类;(2)Fat
最最通用的办法就是将Spring boot的应用程序打包成一个fat jar,然后写一个docker file,将这个fat jar制作成为一个docker image然后运行。...Spring boot的fat jar分为三个部分,第一部分就是BOOT-INF, 里面的class目录放的是我们自己编写的class文件。而lib目录存放的是项目依赖的其他jar包。...第三部分是Spring Boot的类加载器,fat jar包的启动是通过Spring Boot的jarLauncher来创建LaunchedURLClassLoader,通过它来加载lib下面的jar包...但是如果使用的是fat jar包,即使我们只修改了我们自己的代码,也会导致整个fat jar重新更新,从而影响docker image的构建速度。...jar包 snapshot-dependencies – SNAPSHOT的依赖jar包 spring-boot-loader – Spring boot的class loader文件 application
SpringBoot打包部署解析 SpringBoot项目支持两种常见的打包形式: jar 包和 war 包。...本节从 jar 包的生成、结构、运作原理来分析 Spring Boot的实现。 jar包的生成 Spring Boot 的可执行 jar 包又称作 fat jar”,是包含所有三方依赖的 jar。...spring-boot-maven-plugin 的 repackage 能够将 mvn package 生成的软件包,再次打包为可执行的软件包,并将 mvn package 生成的软件包重命名为*.original...另外的spring-learn-0.0. 1-SNAPSHOTjar包则是在 Spring Boot 中通过 jar jar 启动的包,它包含了应用的依赖,以及 spring boot 相关 class...jar包的结构 在上一节中,通过 spring-boot-maven-plugin 生 成了可执行的 jar 包,下面分析-下 jar 包 spring-learn-0.0.1-SNAPSHOT.jar
spring-boot-maven-plugin SpringBoot 的可执行jar包又称fat jar ,是包含所有第三方依赖的 jar 包,jar 包中嵌入了除 java 虚拟机以外的所有依赖,是一个...普通插件maven-jar-plugin生成的包和spring-boot-maven-plugin生成的包之间的直接区别,是fat jar中主要增加了两部分,第一部分是lib目录,存放的是Maven依赖的...└─util 也就是说想要知道fat jar是如何生成的,就必须知道spring-boot-maven-plugin工作机制,而spring-boot-maven-plugin...其二,如果在这个机制下,由于fat jar中依赖的各个第三方jar文件,并不在程序自己classpath下,也就是说,如果我们采用双亲委派机制的话,根本获取不到我们所依赖的jar包,因此我们需要修改双亲委派机制的查找...包中依赖包spring-boot-loader和spring-boot,使用 "!
当然,run方法必须要配合相关的注解才能实现Spring Boot目标功能。关于spring boot打包以及jara -jar或者CLI启动,后续的博文会介绍。...Starter 特性并没有什么新的技术,仅仅是通过pom文件的方式引用了一些必要的包,然后在引入之后通过Spring Boot的自动推导配置为引入的jar包注入必要的配置Bean。...需要注意的是如果运行完整打包的工程Spring Boot不启用任何Devtools相关的功能(实际上打包工具spring-boot-maven-plugin默认情况下不会去打包Devtools),为了防止...前面介绍了Devtools的“热部署”是通过2个ClassLoader(BaseClassLoader、RestartClassLoader)实现的,默认情况下.jar包中的类只会使用BaseClassLoader...首先,我们需要在打包的时候连同spring-boot-devtools一起打包并发布,而spring-boot-maven-plugin默认不是打包Devtools的,所以我们需要将Pom文件的plugins
但是随着例行维护发现,springboot每次整体打包,都要往服务器传递近百来兆的一个大的jar包,非常费力,所以就想着进行一个简单的优化,从而使每次上传的量尽量小。 ...而实际情况是:我的个人主页模块基本定型了,依赖基本不会产生大的变动了,所以想要将这个jar包分离,单独放在一个lib文件夹下,每次只需要打包核心代码上传即可!...不过有时候可能会使用自己的parent或者个人喜欢明确的引入依赖,那么可能需要自己配置goal。 设置为repackage可以打包成可执行的jar包或者war。...如果没有main函数,后续设置layout=NONE也可以实现打包不可执行的jar包。...若要再war包生效,需要设置spring-boot-devtools的optional为true或者scope为 provided。这个工具可以重写manifest文件,管理了启动类和主类集。
可执行jar(有时称为“fat jar”)是包含已编译类 以及代码需要运行的所有jar依赖项的归档。...可执行的jar和Java Java没有提供加载嵌套jar文件的标准方法(jar文件本身包含在jar中)。如果您要分发自包含的应用程序,这可能会有问题。 为了解决这个问题,许多开发人员使用“超级”罐子。...uber jar将所有应用程序依赖项中的所有类打包到一个存档中。这种方法的问题在于 很难看出应用程序中有哪些库。如果在多个罐子中使用相同的文件名(但具有不同的内容),也可能会有问题。...Spring Boot采用不同的方法,让你直接嵌套罐子。 要创建可执行jar,我们需要将 spring-boot-maven-plugin 添加到 pom.xml 。...这是Maven在Spring Boot重新打包之前创 建的原始jar文件。 要运行该应用程序,请使用 java -jar 命令,如下所示: 和以前一样,要退出应用程序,请按 ctrl-c 。
:如果要构建Spring Boot应用可执行的JAR,则需要添加 spring-boot-maven-plugin 插件配置到 pom 文件中。...FAT Jar 和 FAT War 执行模块-Spring-boot-loader 问:为何 java -jar命令能够执行FAT Jar 文件呢?...2、但是打的包依然是要放入外在Tomcat容器中,也可以使用Tomcat插件配置打包,打包后用java -jar也可以运行 Tomcat插件演示 官方最高支持 tomcat7 ,tomcat8 社区维护...image.png Tomcat 插件插件生成jar包 和Spring boot 生成jar的区别 1、Tomcat maven插件,本质上还是传统的Tomcat部署,先将WEB应用打包为ROOT.war...2、Tomcat Maven 插件打包的Jar或者War 是非 FAT模式。简单说就是存在压缩的情况。Spring Boot maven 插件 采用零压缩模式。 零压缩相当于 :jar -0 参数。
项目中涉及到编译、打包、运行、使用jar包等等,都可以使用maven来帮助我们,使用pom.xml文件来进行处理。 2.1 Maven作用 项目构建:提供标准的、跨平台的自动化构建项目的方式。...依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源之间的版本冲突等相关问题。 统一开发结构:提供标准的统一的项目开发结构,如下所示。...2.3 本地仓库配置 修改maven安装包中的conf/settings.xml文件,指定本地仓库的位置。...2、能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件。即直接为jar包。 3、提供定制化的启动器Starters,简化了Maven配置,开箱即用。...> 在application.properties中添加: spring.devtools.restart.enabled=true spring.devtools.restart.additional-path
运行方式 Spring Boot应用程序有两种运行方式: 以jar包方式运行 以war包方式运行 两种方式应用场景不一样,各有优缺点 jar包运行 通过maven插件spring-boot-maven-plugin...war包运行 以war包方式运行,通过maven插件spring-boot-maven-plugin进行相关配置后,最终生成一个可运行在tomcat,weblogic等java web容器中的war包。...这里我们介绍 jar 方式。 基本准备 Web 服务器 对于Spring Boot,Spring官方的建议是将Spring Boot应用打包成一个fat jar,通过java命令来启动运行。...IDEA打包: Maven 命令: # 清理已存在的编译结果mvn clean # 打包mvn package 打包完成后将在targe目录生成对象的jar包。...注: Jar的相关依赖信息、包名称等等在pom文件中进行设置。 部署 将打包后的文件放置在部署服务器的指定目录下,并设置指定权限, 在该目录下编辑启动脚本start.sh: #!
大家都知道,SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到的全部依赖,启动也非常简单,java -jar xxx.jar即可。...打包方式详解 主要是通过两个maven插件打出这样的结构的包。...1. spring-boot-maven-plugin 该插件是spring boot官方提供的一个打包插件,主要用来打出fat jar,并且提供了支持java -jar xxx.jar方式启动。...我们需要用这个插件,因为只有它可以打出支持启动的jar,但是打出的包中又不能有依赖,该怎么做呢?如下图: layout: 布局方式,这里要选择ZIP,后面说明原因。...Spring Boot 可执行 jar 的主要入口点;关注公众号:码猿技术专栏,回复关键词:1111 获取阿里内部的java性能调优手册;它是 Spring Boot jar 文件中的实际 Main-Class
大家好,我是不才陈某~大家都知道,SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到的全部依赖,启动也非常简单,java -jar xxx.jar即可。...打包方式详解主要是通过两个maven插件打出这样的结构的包。...1. spring-boot-maven-plugin该插件是spring boot官方提供的一个打包插件,主要用来打出fat jar,并且提供了支持java -jar xxx.jar方式启动。...我们需要用这个插件,因为只有它可以打出支持启动的jar,但是打出的包中又不能有依赖,该怎么做呢?如下图:图片layout: 布局方式,这里要选择ZIP,后面说明原因。...Spring Boot 可执行 jar 的主要入口点,它是 Spring Boot jar 文件中的实际 Main-Class,用于设置适当的 URLClassLoader 并最终调用Spring Boot
前言 如果本文对你有帮助的话,球球帮忙投个票吧,投票通道 感激不尽呀~~ 大家都知道,SpringBoot应用最终会打出一个Fat Jar, 里面包含了用到的全部依赖,启动也非常简单,java -jar...打包方式详解 主要是通过两个maven插件打出这样的结构的包。...spring-boot-maven-plugin 该插件是spring boot官方提供的一个打包插件,主要用来打出fat jar,并且提供了支持java -jar xxx.jar方式启动。...官网地址:docs.spring.io/spring-boot…。 我们需要用这个插件,因为只有它可以打出支持启动的jar,但是打出的包中又不能有依赖,该怎么做呢?...Spring Boot 可执行 jar 的主要入口点,它是 Spring Boot jar 文件中的实际 Main-Class,用于设置适当的 URLClassLoader 并最终调用 Spring Boot
:org.apache.maven.plugins:maven-jar-plugin:2.4:jar org.springframework.boot:spring-boot-maven-plugin:...1.0.1.RELEASE:repackage 2、编译打包:工程-->Run As--> Maven build (编译)--- Maven install(打包) 3、获取jar包:在工程下的...target文件夹下找到打包的jar文件; 4、部署:springboot工程打包jar部署只需要jre坏境即可: 文件结构如下:满足linux与windows机器部署需要,使用不同的jre...二、打包成war并部署: 官网的说明:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/...Goals输入package 2、如果正常的话,可以在工程-target文件夹下找到打包好的war; 3、部署:需要jre和tomcat,结构如下: war包放入tomcat文件夹中的
,因为test的starter中包含了junit。...场景:redis的默认配置。数据库连接池的大小配置。 @ComponentScan 组件包扫描,也就是我现在需要扫描哪些包下面的注解,可自动发现和装配一些bean。...35729 (四)项目打包部署 修改boot-parent中pom.xml文件,增加如下内容(当然也可以把下面的内容复制到子模块中也是可以的) ...执行java -jar xx.jar ? 【注意:执行jar的jdk版本需要与jar打包编译的版本一致。...如果配置了环境变量,直接使用java命令打包即可】 PS:SpringBoot的入门基本到这里,这就是微架构,一个程序打包之后轻轻松松在如任何地方一执行就完成了。
包就可以不用了,因为test的starter中包含了junit。...进入官网查询Reference:https://start.spring.io/ 这里面ctrl +f 搜索:starter,就可以看到spring boot中的所有starter 编写测试类 package...35729 项目打包部署(五) 修改boot-parent中pom.xml文件,增加如下内容(当然也可以把下面的内容复制到子模块中也是可以的) ...jar文件 执行java -jar xx.jar 【注意:执行jar的jdk版本需要与jar打包编译的版本一致。...如果配置了环境变量,直接使用java命令打包即可】 PS:SpringBoot的入门基本到这里,这就是微架构,一个程序打包之后轻轻松松在如任何地方一执行就完成了。
领取专属 10元无门槛券
手把手带您无忧上云