Spring Boot 本地jar包

Posted 否定之否定

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 本地jar包相关的知识,希望对你有一定的参考价值。

一:问题场景

    在开发过程中,我们有时会遇到Maven中央库没有的jar包,比如公司自己开发的而又没有放入公司私库的jar包,这时就不能通过三围在pom中直接引入。那么怎么在项目中引入这些本地或第三方jar包呢?

 

二:解决方法

    常用的解决方法主要有两种。

    第一种是将本地jar包安装在本地maven库。这种方法简单方便,以后其他项目需要引入时不需要再次安装。如果没有放入公司私库,则不适合协同开发,比如一位同事在本地安装了这个jar包,另一位同事通过SVN或git将代码下载下来后,由于本地库没有安装该jar包,可能会报错。

    第二种是将本地jar包放入项目目录中。这种方法解决了第一种方法中的问题,但需要在pom文件中加上少许配置,这种方法根据将项目打包成jar和war包而略有不同。

 

三:详细方法

(1)安装在本地maven库

    假设我们需要引入的包为 myjar-1.0.jar

(1.1)打开cmd,进入myjar-1.0.jar所在的目录

(1.2)执行如下命令:mvn install:install-file -Dfile=myjar-1.0.jar -DgroupId=com.ws.sample -DartifactId=myjar -Dversion=1.0 -Dpackaging=jar

注意:install:install-file 中-file与install之间没有空格,三围可以根据自己需求设置

然后去本地资源库看下是否有相应文件

(1.3)在pom依赖中引入安装的jar包

 

第一种方法介绍完毕

 

 

(2)本地jar包放入项目目录中(项目打包成jar)

 (2.1)jar包结构

 

(2.2)在本地项目目录中建一个目录专门来放jar文件,位置可根据需求设置,如项目根目录下建一个lib目录,并将本地jar包放入lib目录下。

(2.3)pom依赖中加入如下配置

说明:basedir是自带变量,指的是当前项目的绝对路径

 此时,在项目中使用myjar-1.0.jar包中类完全没有问题,但是我们来看看打包后结果:

 

 在mvn clean package将项目打包成jar包后,BOOT-INF\\lib目录下并没有我们引入的myjar-1.0.jar包

 这时,还需要在pom中加入如下配置

 

 再次打包,mvn clean package打包后结果:

在使用mvn clean package将项目打包成jar包后,BOOT-INF\\lib目录下出现了我们引入的myjar-1.0.jar包

项目引入本地jar包并打包成jar包的方法介绍完毕,2.4节将介绍一种和本节相似的方法。

 

(2.4)通过资源来控制打包

注意:第二个resource不能少,否则src/main/resources目录下资源不会被打包进项目jar包

此种方法也需要配置spring-boot-maven-plugin,只是相对2.3中配置去掉configuration的配置,这种方法个人感觉没有2.3节方便

 

(3)项目打包成war包

   (3.1)war包结构

(3.2)我们按照第2节中方法,将项目打包成war包,而不是jar包,看看打包后结果:

    发现按照打包jar包的方法打包成war包时,本地jar文件并没有打包进来。

(3.3)在pom中添加如下插件

说明:插件将lib目录下的本地jar包打包进WEB-INF/lib目录

mvn clean package,再次将项目打包成war包,再次看下打包结果:

 

 本地myjar-1.0.jar被打包进项目war包的lib目录了。

 第二种方法介绍完毕

 

 

提升个人竞争力,欢迎关注我的微信公众号:破局人

以上是关于Spring Boot 本地jar包的主要内容,如果未能解决你的问题,请参考以下文章

spring-boot-maven-plugin 安装本地jar 包

Spring Boot 增加jar包

spring-boot打包,引入外部jar包问题

怎么把本地spring jar包导入maven

使用 `publishToMavenLocal` 构建可以发布到 maven 本地 repo 的可执行 jar - spring boot 项目

Spring Boot 的项目打包成的 JAR 包,制作成 docker 镜像并运行