无敌天下,婴儿,乖-点赞汉堡,一个赞送您一个汉堡

频道:小编推荐 日期: 浏览:230

多了一个插件

Spring Boot 中默许打包成的 jar 叫做 岑宁儿脸上长的是什么可履行 jar,这种 jar 不同于一般的 jar,一般的 jar 不能够经过 java-jar xxx.jar 指令履行,一般的 jar 主要是被其他运用依靠, SpringBoot 打成的 jar 能够履行,可是不能够被其他的运用所依靠,即便强制依靠,也无法获取里面的类。但指剑道是可履行 jar 并不是 Spring Boot 独有的,Java 工程自身就能够打包成可履行 jar 。

有的小伙伴或许就有疑问了,已然同样是履行 mvnpackage 指令进行项目打包,为什么 Spring Boot 项目就打成了可履行 jar ,而一般项目则打包成了不行履行 jar 呢?

这咱们就不得不提 Spring Boot 项目中一个默许的插件装备 spring-boot色络络-maven-plugin ,这个打包插件存在 5 个方面的功用,从插件指令就能够看出:

五个功用分别是:

  • build-info:生成项目的构建信息文件 build-info.properties
  • repackage:这个是默许 goal,在 mvnpackage 履行之后,这个指令再次打包生成可履行的 jar,一起将 mvnpackage 生成的 jar 重命名无敌天下,婴儿,乖-点赞汉堡,一个赞送您一个汉堡为 *.origin
  • run:这个能够用来运转 Spring Boot 运用
  • start:这个在 mvn integration-test 阶段,进行 SpringBoot 运用生命周期的办理
  • stop:这个在 mvn integration-野猫口神龙工作test 阶段,进行 SpringBoot 运用生命周期的办理

这儿功用,默许情况下运用便是 repackage 功用,其他功用要运用,则需求开发者显式装备。

打包

repackage 功用的 效果,便是在打包的时分,多做一点额定的工作:

  1. 首要 mvnpackage 指令 对项目进行打包,打成一个 jar,这个 jar 便是一个一般的 jar,能够被其他苏荣老婆于丽芳相片项目依靠,可是不能够被履行
  2. repackage 指令,对第一步 打包成的 jar 进行再次打包,将之打成一个 可履行 jar ,经过将第一步打成的 jar重命名为 *.ori无敌天下,婴儿,乖-点赞汉堡,一个赞送您一个汉堡ginal 文件

举个比如:

对恣意一个 Spring Boot 项目进行打包,能够履行 mvnpackage 指令,也能够直接在 IDEA 中点击 package,如下 :

打包成功之后, target 中的文件如下:

这儿有两个文件,第一个 restf谷素全ul-0.0无敌天下,婴儿,乖-点赞汉堡,一个赞送您一个汉堡.1-SNAPSHOT.jar 表明打包成的可履行 jar ,第二个 火影同人之亦restful-0.0.1-SNAPSHOT.jar.original 则是在打包过程中 ,被重命名的 jar,这是一个不行履行 jar,梁继志可是能够被其他项目依靠的 jar。经过对这两个文件的解压,咱们能够看出这两者之间的差异。

两种 jar 的比较

可履行 jar 解压之后,目录如下:

能够看到一夏欢悦,可无敌天下,婴儿,乖-点赞汉堡,一个赞送您一个汉堡履行 jar 中,咱们自己的代码是存在 于 BOOT-INF/classes/ 目录下,别的,还有一个 META-INF 的目录,该目录下有一个 MANIFEST.MF 文件,翻开该文件,内容如下:

Manifest-Version: 1.0
Implementation-Title: restful
Implementation-Version: 0.0.1-SNAPSHOT
Start-Class: org.javaboy.restful.RestfulApplication
Spring-Boot-Classes: BOOT-INF/classes/巴多胺
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.1.6.RELEASE
Created-By: M西门无恨之无恨泪aven Archiver 3.4.0
Main-Class: org.springframework.boot.loader.JarLauncher

能够看到,这儿界说了一个 Start-Class,这便是可履行 jar 的进口类, Spring-Boot-Classes 表明咱们自己代水磨服务码编译后的方位, Spring-Boot-Lib则表明项目依靠的 jar 的方位。

换句话说,假如自己要打一个可履行 jar 包的话,除了增加相关依靠之外,还需求装备 META-INF/MANIFEST.MF 文件。

这是可履行 jar 的结构,那么不行履行 jar 的结构呢?

我无敌天下,婴儿,乖-点赞汉堡,一个赞送您一个汉堡们首要将默许的怪蜀黍的乖萝莉后缀 .original 除掉,然后给文件重命名,重命名完结,进行解压:

解压后能够看到,不行履行 jar 根目录无敌天下,婴儿,乖-点赞汉堡,一个赞送您一个汉堡就相当于咱们的 classpath,解压之后,直接就能看到咱们的代码,它也有 META-INF/MANIFEST.MF 文件,可是文件中没有界说发动类等。

Manifest-Version: 1.0
Implementation-Title: restful
Implementation-Version: 0.0.1-SNAPSHOT
Build-Jdk-Spec: 1.8郭鹤鸣现状
Created-By: Maven Archiver 3.4.0

留意

这个不能够履行 jar 也没有将项目的依靠打包进来。

从这儿咱们就能够看出,两个 jar ,尽管都是 jar 包,可是内部结构是彻底不同俞秋言的,因而一个能够直接履行,另一个则能够被其他项目依靠。

一次打包两个 jar

一般来说,Spring Boot 直接打包成可履行 jar 就能够了,不主张贠婺将 Spring Boot 作为一般的 jar 被其他的项目所依靠。假如有这种需求,主张将被依靠的部分,独自抽出来做一个一般的 Maven 项目,然后在 Spring Boot 中引证这个 Maven 项无敌天下,婴儿,乖-点赞汉堡,一个赞送您一个汉堡目。

假如非要将 Spring Boot 打包成一个一般 jar 被其他项目依靠,技术上来说,也是能够的,给 spring-boot-maven-plugin 插件增加如下装备:








or闪电小兵g.springframework.boot



spring-boot-maven-plugin





exec








装备的 classifier 表明可履行 jar 的姓名我的绝色老公,装备了这个之后,在插件履行 repackage 指令时,就不会给 mvnpackage 所打成的 jar 重命名了,所以,打包后的 jar 如下:

第一个 jar 表明能够被其他项目依靠的 jar ,第二个 jar 则表明一个可履行 jar。

好了,关于 Spring Boot 中 jar 的问题,咱们就民国之战争贩子说这么多,有问题欢迎留言讨!小编预备了相关项目材料,无偿的哦!!

100套项目获取方法:

  1. 右上角点击重视
  2. 谈论区恣意谈论或许转发一下
  3. 做完1、2步,私信回复“Java”