欢迎来到我的博客

Spring Boot多模块项目引入外部JAR解决方案

解决使用system时JAR未被打包的问题

问题背景

在Spring Boot多模块项目中,使用system引入外部JAR时,默认不会被打包进入最终的Fat JAR。

这会导致运行时出现ClassNotFoundException或NoClassDefFoundError等错误。

方案1

配置Spring Boot Maven插件
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 关键配置: 包含system作用域的依赖 -->
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
    </plugins>
</build>

实施步骤
在父模块或启动模块的pom.xml中添加配置
重新执行mvn package

方案2

手动复制JAR到构建目录
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-lib</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/BOOT-INF/lib/</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/resources/lib</directory>
                                <includes>
                                    <include>*.jar</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

实施步骤
将JAR文件放入src/main/resources/lib目录
在引入依赖的模块中添加配置
重新打包

方案3

将JAR安装到本地仓库
  1. 安装到Maven本地仓库
mvn install:install-file \
  -Dfile=src/main/resources/lib/reader.jar \
  -DgroupId=com.ruoyi \
  -DartifactId=ruoyi-lib \
  -Dversion=1.0.0 \  # 指定实际版本号
  -Dpackaging=jar
  1. 修改依赖配置
    <groupId>com.xxx</groupId>
    <artifactId>xxx-lib</artifactId>
    <version>1.0.0</version>
    <!-- 移除scope和systemPath -->
</dependency>

实施步骤
执行Maven安装命令
修改依赖配置
重新打包

image

posted @ 2025-07-08 16:56  fchhk  阅读(81)  评论(0)    收藏  举报