标题可能有点绕口,在实际开发中,有时所有引用的jar架包无法在 maven 中央仓库里找到,那么引用本地jar包就成为了必须,然而在项目开发完成后,需要打包部署时,引用的本地jar架包没有相应的打包进去,就会导致项目运行失败或运行错误
本篇文章分享引用本地jar与打包本地jar,总结起来很简单,分3步:
- 1.在项目资源目录下创建一个文件夹,用来存放 本地jar包
- 2.在pom.xml中添加 本地jar包的引用,引用目录为第一步创建的文件目录
- 3.在pom.xml的plugins中添加编译打包的目录,使本地jar包能打到项目中去
先准备好本地jar包,然后在项目的resources目录创建 lib 目录,把本地jar包放进 lib 下,我以在项目中用到 微信支付的jar包作为示例
1.在Pom.xml中引用本地jar包
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/wxpay-sdk-0.0.3.jar</systemPath>
</dependency>
创建一个WeiXinPay.java类,测试本地jar包是否可以导入在代码中了,用一个main方法测试,发现可以使用 com.github.wxpay.sdk 命令空间下的 WXPay 对象,说明引用本地jar包成功
2.此时,可以在项目中进行开发了,但是打包部署项目时, wxpay-sdk-0.0.3.jar 不会打到主项目包中,为什么呢?因为还需要在 pom.xml 里面做一些配置,配置如下:
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${project.basedir}/src/main/resources/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
</plugins>
加入上面的 plugin 配置后,在 ieda 中,打开 Maven Projects,展开Lifecycle,点击 package,对项目进行打包,可以看到 idea 左下角显示 BUILD SUCCESS , Building jar: E:\git_worker\spring-web\expend\target\expend-0.0.1-SNAPSHOT.jar,项目打包后的位置
通过 好压打开 expend-0.0.1-SNAPSHOT.jar ,看看项目的jar包里面的目录与文件结构
在expend-0.0.1-SNAPSHOT.jar\BOOT-INF\lib目录下,可以看到 wxpay-sdk-0.0.3.jar 被打包进去了,如果在 pom.xml 中不加 plugin 的配置,就不会打进去,项目启动或运行后就会报错