springboot jar分离部署

  • 注意:spring boot web项目别使用jsp页面,可以使用模板代替,jsp打包时访问页面会报404错误。

1.具体配置如下:

<build>
        <plugins>
            <!-- 1. Spring Boot 核心打包插件(移除无效的resolveDependencies目标) -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.6.13</version>
               <!-- 和springboot版本一致-->
                <configuration>
                    <!-- 替代废弃的layout,2.x+推荐使用layoutMode -->
                    <!--<layoutMode>ZIP</layoutMode>-->
                    <!-- 主Jar包仅包含自身项目代码,排除第三方依赖 -->
                    <includes>
                        <include>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>${project.artifactId}</artifactId>
                        </include>
                    </includes>
                    <!-- 指定主启动类(可选,多启动类时必须指定) -->
                    <mainClass>com.jyzy.sjzt.SJZTApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!-- 仅保留有效核心目标:repackage(重新打包生成可执行主Jar) -->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- 2. 新增Maven官方依赖插件:复制第三方依赖到lib目录(实现依赖分离) -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.5.0</version> <!-- 稳定版本,可兼容大部分Spring Boot项目 -->
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase> <!-- 绑定到package打包阶段,自动执行 -->
                        <goals>
                            <goal>copy-dependencies</goal> <!-- 有效目标:复制所有依赖 -->
                        </goals>
                        <configuration>
                            <!-- 依赖输出目录:target/lib(与主Jar包同级) -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <!-- 排除可选依赖(可选,减少lib目录体积) -->
                            <excludeOptional>true</excludeOptional>
                            <!-- 排除系统依赖(可选) -->
                            <excludeSystemScope>true</excludeSystemScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- 3. 配置maven-jar-plugin:指定类路径,让主Jar能找到lib目录下的依赖 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.3.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath> <!-- 启用类路径配置 -->
                            <classpathPrefix>lib/</classpathPrefix> <!-- 依赖相对路径(指向同级lib目录) -->
                            <mainClass>com.jyzy.sjzt.SJZTApplication</mainClass> <!-- 主启动类 -->
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.打包目录如下:

lib
xxx.yml
xxx-1.0.jar

3.运行:

 java -jar   xx.jar --loader.path=lib --spring.config.location=config/application.yml --debug
 <!-- --debug查看项目日志 -->
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐