欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot中引入本地jar包,并通过maven把项目成功打包成jar包部署

程序员文章站 2022-07-03 11:28:56
...

问题描述:

最近尝试引入淘宝授权以及阿里云物联网网关,sdk-core-java、taobao-sdk-java是maven就有的,但是测试环境下taobao-sdk-java这个jar包却不是放在maven的,所以得引入本地的下载回来的jar包。本地开发直接引入,idea是可以直接跑调用是没问题的。但是打成jar包部署的时候,项目能跑,但是到关键的调用淘宝sdk的时候就爆java.lang.NoClassDefFoundError错误。以下是在*上找到的答案,在此记录下。


现象:

Springboot中引入本地jar包,并通过maven把项目成功打包成jar包部署


解决:

如何引入本地jar包

1.在resources下面新建lib文件夹,并把jar包文件放到这个目录下

Springboot中引入本地jar包,并通过maven把项目成功打包成jar包部署

2.在pom文件定义jar包依赖

<!-- 淘宝授权sdk -->

<dependency>

<groupId>taobao-sdk-java</groupId>

<artifactId>taobao-sdk-java</artifactId>

<version>1.0</version>

<scope>system</scope>

<systemPath>${project.basedir}/src/main/resources/lib/top-api-sdk-dev-tmall-iot-1.0-20180808.091941-1.jar</systemPath>

</dependency>

注意:重点是systemPath这个路径必须得是你jar的路径。其他的按照套路填就行,要求不是太严格。${project.basedir}只是一个系统自己的常量,不用管它


如何把项目打成jar,同时把本地jar包也引入进去

直接在maven的pom里给springboot的打包插件引入一下参数就行

<includeSystemScope>true</includeSystemScope>

总体是这样的

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${version.springboot.maven.plugin}</version>
                <configuration>
                    <executable>true</executable>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>