Spring Boot打包问题

299 阅读1分钟

可执行jar和普通jar

Spring Boot默认打包就是可执行jar包,普通项目打包是普通jar

  • 可执行jar包是可以使用java -jar app.jar命令执行的,普通jar包不能被执行

  • 可执行jar包是不能被依赖的,普通jar包是可以作为第三方被依赖的

  • 这两种的jar包目录结构不一样, 可执行jar多了一些SpringBoot的文件
    可执行jar

    普通jar

  • MANIFEST.MF文件的信息不一样,可执行jar多了一些启动类的信息
    可执行jar

    Manifest-Version: 1.0
    Implementation-Title: spring-boot-security
    Implementation-Version: 0.0.1-SNAPSHOT
    Start-Class: com.aloneness.spring.boot.security.SpringBootSecurityApplication
    Spring-Boot-Classes: BOOT-INF/classes/
    Spring-Boot-Lib: BOOT-INF/lib/
    Build-Jdk-Spec: 1.8
    Spring-Boot-Version: 2.2.6.RELEASE
    Created-By: Maven Archiver 3.4.0
    Main-Class: org.springframework.boot.loader.JarLauncher
    

    普通jar

    Manifest-Version: 1.0
    Implementation-Title: spring-boot-security
    Implementation-Version: 0.0.1-SNAPSHOT
    Build-Jdk-Spec: 1.8
    Created-By: Maven Archiver 3.4.0
    

spring-boot-maven-plugin

Spring Boot打包比普通的打包多了一个插件

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

这个插件会在打包的时候增加一个repackage的步骤,将普通的jar包打包成可执行jar包,原来的jar包会重命名为*.original