• 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>
    
  • 相关阅读:
    ubuntu 16.04 网络配置之虚拟网卡的配置
    rabbitmq集群节点操作
    Ubuntu system zabbix-server-3.x install documentation
    PS RSS
    proxy_set_header设置Host为$proxy_host,$host与$local_host的区别
    centos 7 free 字段含义
    Linux atop 监控系统状态
    谨慎调整内核参数:vm.min_free_kbytes
    nginx反向代理http与https两种协议配置简述
    Python 获取以毫秒为单位的时间戳
  • 原文地址:https://www.cnblogs.com/manastudent/p/14601554.html
Copyright © 2020-2023  润新知