SpringBoot —— 项目部署及打包

搭建环境

  • Windows10 电脑自带、免费
  • AdoptOpenJDK 官方推荐、免费
  • IntelliJ IDEA 社区版 功能强大、免费

构建版本

  • SpringBoot版本 2.4.0
  • AdoptOpenJDK 11
  • IJ社区版2020.2.3

target目录

target目录会在执行打包操作后自动生成

target目录

target(浅黄色区域)内包含两种重要文件:

  • 文件夹 classes 保存了编译后的class文件和配置文件,对于需要部署独立服务器如tomcat的场景可以直接复制
  • jar包 holyhigh-xxx.jar 是可运行的独立文件,内含tomcat容器和依赖的所有其他jar包

独立Jar包

内置tomcat的可运行jar包为部署方式提供了另一条路。每次版本更迭后直接产生一个新的运行包,既不需要通过copy类文件(容易错漏)部署同时也防止错误更新覆盖了旧版本,这种方式可以更有效、更便捷的部署到服务器。

配置Jar包

SpringBoot默认提供了多种打包方式可以在pom文件中配置,还有更多配置项是基于Apache Maven。
默认配置下,直接打包会将所有依赖的JAR包都打入最终部署包,这对于每次通过VPN/远程部署的人来说是不可接受更没有必要的

空项目26M

下面介绍两种打包方式以供选择:

1. 通过配置maven插件

这种方式需要用到额外的maven插件配置加入到pom.xml中


  holyhigh-learnsb
    
      ############  这里添加maven插件,用来分离依赖包
      
        org.springframework.boot
        spring-boot-maven-plugin
        ############  这里添加插件属性
      
    

############  maven-dependency-plugin 插件,用来输出依赖包到指定的目录

    org.apache.maven.plugins
    maven-dependency-plugin
    3.1.2
    
        
            copy-dependencies
            package
            
                copy-dependencies
            
            
                false
                false
                
                false
                
                ${project.build.directory}/deploys/lib
            
        
    

############  maven-jar-plugin 插件,用于写入依赖包路径到jar包的MANIFEST.MF文件中

    maven-jar-plugin
    3.2.0
    
        
            
                
                true
                
                lib/
            
        
    

############  spring-boot-maven-plugin 插件属性,用于剔除依赖包

    
     
      false     
      false
    
    
    
        
            null
            null
        
    
    
    ${project.build.directory}/deploys

完成pom配置后再次打包,可以看到jar包只有100多k(主要是SpringBoot启动器),并且依赖jar包都已经输出到lib目录中
依赖已分离

使用压缩软件打开.jar文件,并查看MANIFEST.MF文件,可以看到类路径已经变为指定路径


MF文件
  1. 依赖包已经输出到lib中
  2. class-path已经加上了lib/前缀
2. 通过自定义插件

这种方式通过在 spring-boot-maven-plugin 中增加依赖插件实现



    
        org.springframework.boot.experimental
        spring-boot-thin-layout
        1.0.25.RELEASE
    

通过thin-jar插件打出来的包非常 "",只有10多k

thin-jar

这看起来非常棒,但你必须了解关于thin-jar的一些特性

  • 他重写了springboot的loader
  • 他(默认)不依赖也不输出本地lib,而是在启动时从网络加载(首次)
  • 目前还是experimental
  • 更多信息可以查看插件github

所以,使用哪种方式可以根据你的部署要求和环境来确定

你可能感兴趣的:(SpringBoot —— 项目部署及打包)