轻便的springboot打包方式

传统打包方式,把项目依赖的jar包一起打包到最终的jar里面,
如果更新频繁,每次上传到云服务器需要很久,如果可以确定在 项目依赖不会再变更 的情况下
可以将项目依赖jar包抽离出来,这样后续维护会很方便

传统打包的pom配置如下

    <build>
        <!--传统打包配置-->
        <finalName>test</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.0.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>

            <!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。-->
            <resource>
                <!--   描述存放资源的目录,该路径相对POM路径-->
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

打包后解压jar文件,将 BOOT-INF 文件夹下的 lib 文件夹抽离出来,打成zip包

替换pom文件打包配置如下

    <build>
        <!--传统打包配置-->
        <finalName>test</finalName> <!-- 打出来的jar包名称 -->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.0.RELEASE</version>

                <configuration>
                    <mainClass>com.test.Main</mainClass>  <!-- 启动类 -->
                    <layout>ZIP</layout>
                    <!-- 依赖的jar包不打包进最终的jar -->
                    <includes>
                        <include>
                            <groupId>nothing</groupId>
                            <artifactId>nothing</artifactId>
                        </include>
                    </includes>
                </configuration>

                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

    </build>

重新打包后的jar文件很小,一般是几百K

将第一步打好的zip包传到云服务器解压,比如 /www/wwwroot/test.com 目录下的某个文件夹,比如 lib 文件夹
将打好的不包含依赖包的jar传到云服务器相同目录
编辑启动脚本

nohup java -Dloader.path=./lib  -jar test.jar & tail -f nohup.out

可以正常运行,以后再修改功能再打包上传云服务器就非常快,只有几百K,秒传

如果是maven父子工程,Main依赖service,common等等,如果只有service或者common工程的文件有变动,
重新打包后,只需要把服务端的lib目录下的service或者common的jar包替换就可以了

posted @ 2024-05-26 16:53  猝死的路上  阅读(42)  评论(0编辑  收藏  举报