工作记录给-Spring-boot-Jar-瘦瘦身

39次阅读

共计 1062 个字符,预计需要花费 3 分钟才能阅读完成。

写在前面

在如今程序员的世界中,spring boot 越来越流行,不管是开发 web 应用还是构建 spring cloud 微服务架构都离不开它,

不同于传统的 web 应用 需要单独部署容器来发布 war 包,spring boot 应用可以把整个项目打包成我们熟悉的 jar 来运行,大大方便了我们的开发部署。

问题凸显

上述提到 Spring boot 将整个应用打成一个 Jar 来执行,大大提高了我们的效率。

但是同时也给我们带来了烦恼,随着我们项目的不但迭代,也导致 Jar 不断的肥胖,对于高速迭代的项目上传一个如此肥胖的 Jar 简直痛不欲生。

那怎么办?程序员是一个懒人职业,总会想到办法来一次搞定这些问题的。

下面就让我们来看看吧!

解决方案

解决上述问题,只需要如下几步就可以搞定了。

  1. 通常我们是用 spring-boot-maven-plugin 进行打包、通过阅读文档发现可以通过配置使得该插件在打包时忽略特定的依赖,文档:spring-boot-maven-plugin
  2. 首先备份原先的依赖:可以用使用 mvn dependency:copy-dependencies 首先将依赖导出。
  3. 将一些变化不大的 jar copy 到外部文件 lib 文件夹中(和 pom 文件中配置对应)
  4. 修改 pom 文件
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                                <layout>ZIP</layout>
                                <!-- 去除在生产环境中不变的依赖 -->
                                <excludeGroupIds>
                                     org.springframework.boot,
                                     org.springframework,
                                     org.springframework.data,
                                     org.apache.tomcat.embed
                               </excludeGroupIds>
                            </configuration>     
        </plugin>
    </plugins>
</build>            

注:layout 必须是 ZIP、excludeGroupIds 中时忽略也是就需要打在外部的 jar、根据自己项目的情况进行配置,exclude 的更多用法 请参考文档 spring-boot-maven-plugin

  1. 项目启动 将 项目的 jar 和 刚创建的 lib 放在同级目录下(不是必须的)。
  2. 启动项目:java -Dloader.path=”lib/” -jar xx.jar

ok! 就这么简单的帮 spring boot jar 减肥成功了。

正文完
 0