欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

人工更新SpringBoot项目,Jar包太大问题解决

程序员文章站 2022-05-04 14:13:28
...

楼主也是刚接触SpringBoot几天,以前都是用SpringMVC开发,这里跟小伙伴们分享一个需求问题,如果有遇到的话可以继续往下看,能帮助到各位,是最好不过啦。

我们知道用SpringBoot开发后,通过maven打包之后会生成一个xxx.jar包,那这个jar包往往很大,因为里面内嵌着你的其他很多依赖。如果你遇到了你的网络不是很好,或者说服务器远在外网,那么你更新项目上传将是一个非常痛苦的事情。当然你要是会Jenkins这种东西,这种问题会得到很好的解决,因为楼主自己刚转boot,以下是我能目前做到的一种做法,大家可以尝试一下。

基本原理

基于曾经SpringMVC项目部署的经历,可以得出,其实我们最频繁操作的往往是自己写的那些业务代码,或者一些自定义类的编写,组合起来也不过300-400k。所以我们要做的就是把不经常更新的比如一些依赖等jar包统统放置外部,启动时加载即可。
第一步

在pom.xml中加入以下配置

<plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <!--你要保留的依赖  改这里基本就可以了-->
                    <includes>
                        <include>
                            <groupId>com.gaby.xx</groupId>
                            <artifactId>aa-bb</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>
            <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>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!--跳过测试-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
第二步

用-Dloader.path 来加载lib文件夹下的依赖

java -jar -Dloader.path=lib xxx.jar

由此,下次再次打包出来的jar,只有几百k了,其余依赖都在lib中。