在Maven工程中引用本地jar包

在Maven工程中引用本地jar包

如何在Maven工程中引用本地jar包,如何在Maven工程中引用仓库中没有的jar包

背景与问题

自己写了一个小java项目,用的Spring boot全家桶,构建工具用的maven。

工程中需要引用一个第三方包,这个第三方包并没有发布到公开的maven仓库。也就是连maven坐标都没有(别人直接QQ发我的)。

在开发阶段我可以直接用Eclipse把他加入到build path中,但是到了maven的打包阶段,这个包就打不进来,提示各种符号找不到。

解决方案

在网上搜索了一圈,大致有两种方案解决:

  1. 让jar包提供者或者自己把jar包发布到私有/公开仓库。

  2. 在Pom内定义本地仓库地址,然后把jar给拷贝过去。

第一种方法显然短时间搞不定,这里用第二个方法。具体操作如下:

  1. 在POM文件中加入你本地的存放jar的地址,举个例子
1
2
3
4
5
6
7
8
9
10
11
12
13
<repositories>
<repository>
<id>repo</id>
<releases>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>file://F:/r</url>
</repository>
</repositories>

上面表示我的自定义仓库地址在F:/r这个文件夹下

  1. 随便给你要引用的jar包一个坐标,比如
1
2
3
4
5
<dependency>
<groupId>com.longyb</groupId>
<artifactId>tbk-sdk</artifactId>
<version>1.0.0</version>
</dependency>
  1. 然后按照maven的存放jar包的路径,把你的jar包方法对应文件夹下.

${url}/${groupId}/${artifactId}/${version}/${artifactId}-${version}.jar

按照上面这个例子就是放到

1
F:/r/com/longyb/tbk-sdk/1.0.0/tbk-sdk-1.0.0.jar"

这里需要注意如果你的groupId中间有.符号的话,是要用文件夹隔开的.

  1. 这时候之间mvn clean ,mvn package 就可以打出可执行的spring-boot标准jar了,同时依赖的本地jar也可以成功被打包到jar里面