零、问题描述
最近的 APP 项目接支付宝支付,遇到个问题就是,支付宝的 SDK 竟然没有放在 Maven 仓库里,而是要独立下载 jar 文件,醉醉的。
文件名是:alipay-sdk-java20170829142630.jar
放在了项目根目录的 /lib/ 目录下。
写在 pom.xml 文件中如下:
<!-- alipay -->
<dependency>
<groupId>com.alipay</groupId>
<artifactId>alipay-sdk</artifactId>
<version>java20170829142630</version>
<scope>system</scope>
<systemPath>${basedir}/lib/alipay-sdk-java20170829142630.jar</systemPath>
</dependency>
然而,项目最后打包成 可执行jar 的时候,支付宝的 jar 包并没有被打包进来,执行时报类未找到异常。
一、解决方案
在 Spring Boot 项目中,默认是使用 spring-boot-maven-plugin 插件来打包成 可执行jar 的。其实很简单,加一个配置即可。
默认是:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
开启 includeSystemScope 配置后即可:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
二、其他
Maven pom.xml 文件对本地 jar 包的依赖声明,貌似一点也不严格,只要声明了 scope 和 systemPath 即可,其他的 groupId artifactId version 都无关紧要,只要 systemPath 能找到 jar 文件就行了。
不过即使如此,dependency 中的 artifactId 和 version 还是要好好写,因为打包进可执行 .jar 文件后,该 jar 文件名会变成:{artifactId}-{version}.jar。
本文介绍如何将支付宝SDK正确地包含在Spring Boot项目的可执行jar中。通过调整Maven配置,确保外部jar文件能被正确打包,避免运行时出现类未找到的异常。
6566

被折叠的 条评论
为什么被折叠?



