zoukankan      html  css  js  c++  java
  • SpringBoot 项目瘦身

    场景

    在使用 SpringBoot 的过程中发现打包出来的 Jar 是一个 Fat Jar,里面包含了所有项目依赖的第三方 Jar,这就导致在部署的时候十分不方便,动辄 100M 左右的项目实在难以快速部署。

    解决方案

    由于打包出来的 Jar 绝大部分都由项目依赖的第三方 Jar 组成,所以只要将这部分 Jar 包单独抽取出来,然后在启动 SpringBoot 项目的时候指定使用的 lib 就好了。

    实现步骤

    1.pom 增加 plugin

    2.项目启动增加额外参数

    <build>
            <finalName>${project.artifactId}-${project.version}</finalName>
    
            <pluginManagement>
                <!-- 使用两个插件对 SpringBoot 项目瘦身,依赖的 jar 都存放在 lib 文件夹下,部署项目如果没有新的依赖则可以只部署项目中的几个 jar 包即可
                     注意:1.项目有新的依赖添加时,需要上传新的 jar 包到服务器
                          2.core、dao 的 jar 也在 lib 中,发布时也需要替换
                          3.项目启动方式 java -jar -Dloader.path=lib api-0.0.1-SNAPSHOT.jar
                 -->
                <plugins>
                    <!-- 拷贝项目所有依赖jar文件到构建lib目录下 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-dependencies</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>copy-dependencies</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                    <excludeTransitive>false</excludeTransitive>
                                    <stripVersion>false</stripVersion>
                                    <silent>true</silent>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- Spring Boot模块jar构建 -->
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                        <configuration>
                            <includes>
                                <!-- 不存在的include引用,相当于排除所有maven依赖jar,没有任何三方jar文件打入输出jar -->
                                <include>
                                    <groupId>null</groupId>
                                    <artifactId>null</artifactId>
                                </include>
                            </includes>
                            <layout>ZIP</layout>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>repackage</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </pluginManagement>
    
        </build>
    
  • 相关阅读:
    大数加法、乘法实现的简单版本
    hdu 4027 Can you answer these queries?
    zoj 1610 Count the Colors
    2018 徐州赛区网赛 G. Trace
    1495 中国好区间 尺取法
    LA 3938 动态最大连续区间 线段树
    51nod 1275 连续子段的差异
    caioj 1172 poj 2823 单调队列过渡题
    数据结构和算法题
    一个通用分页类
  • 原文地址:https://www.cnblogs.com/manastudent/p/14601554.html
Copyright © 2011-2022 走看看