在Maven的pom文件中引入了jar文件,本地能运行,打成可执行jar包运行报错?

一、问题描述

一个基于SpringBoot的父子工程项目, 在external-libs文件夹里引入了几个甲方提供的jar文件(这样做是由于不让把这些jar文件放入Maven仓库管理),然后在common模块的pom里使用了<scope>system</scope>去引用,如下图所示。本地启动一切正常,打成可执行jar包后就运行报错找不到引入的那些类文件。

1. 项目结构
在这里插入图片描述
2. common包中的pom文件
在这里插入图片描述

二、问题解决

1. 解决思路
使用<scope>和<systemPath>在本地启动完全没问题,但是打成可执行的jar包在测试环境以jar包方式运行就报错,并且是报错找不到刚刚引入的包里的文件,这样首先就应该想到,大概率问题就出在了打包的环节,Maven在打包时没有把external-libs里的jar文件连同pom里引入的其他的在仓库中管理的jar文件一起打入最终的可执行jar包。这样问题就好办了,可以百度,或者把问题描述清楚给ChatGPT,去找到解决方案。
2. 解决办法

如下,在admin模块(启动类所在的模块)的pom文件里利用maven-resources-plugin插件自定义配置Maven的打包过程

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <!--将scope为system的jar包打包进可执行jar包-->
                    <execution>
                        <id>copy-jars</id>
                        <!--指定在 Maven 构建过程中的 prepare-package 阶段执行-->
                        <phase>prepare-package</phase>
                        <goals>
                        	<!--指定需要完成的具体任务-->
                            <goal>copy-resources</goal>
                        </goals>
                        <!--配置插件执行的具体参数,包括输入输出目录、文件过滤规则、资源过滤规则等等-->
                        <configuration>
                        	<!--指定输出目录(以下目录就是打包后的可执行jar包里的依赖目录)-->
                            <outputDirectory>${project.build.outputDirectory}/BOOT-INF/lib</outputDirectory>
                            <!--定义要复制的资源文件-->
                            <resources>
                                <resource>
                                    <directory>${project.basedir}/../external-libs</directory>
                                    <includes>
                                        <include>*.jar</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    </build>
    
	<!--其他内容此处省略-->
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值