近期项目开发中使用到了第三方提供的OTP硬件,其官方同时提供了jar包。而我们当前的项目为标准的maven项目。如何在maven项目中引入第三方jar包呢?

带着问题去搜索能够找到一大把答案,stackoverflow的相关问题发表于9年前,最佳答案获取了1100多个赞。但由于时间过于久远,该方法经测试虽然在开发过程中可行,但项目一旦打包便会发生 类无法成功加载 的错误。

经测试以下方案无论是在开发中,还是在项目打包后,都可以成功的在maven项目引用jar包。

环境:java 1.8 + maven 3.3

添加本地仓库

打开项止pom.xml文件,添加以下信息:

...
local-maven-repository
file://${basedir}/src/main/resources/lib/
true
true
...

其中url中的${basedir}代表当前pom.xml文件所在的文件夹。${basedir}/src/main/resources/lib/即为存放第三方jar包的位置。

添加依赖

打开pom.xml,添加第三方jar包依赖。比如:

com.mengyunzhi.core

Share

1.0

groupId填写第三方包的package名称;artifactId可以填写要引用的类名;version可以按自己的情况填写,第一次引用可以使用1.0。

添加文件

将第三方jar包按以下的规律添加到${basedir}/src/main/resources/lib/文件夹中。比如:


如上:文件夹使用gourpId+artifactId+version来命名,最终的文件名使用artifactId-version.jar来命名。

至此便可以在项目中正常的使用该jar包提供的功能了。

travis

上述配置足以使得我们在IntelliJ IDEA中应对自如,但如果你的项目使用了travis(或许是MAVEN版本的原因)进行测试,上述配置可以会引发相关的错误,比如提示本地仓库与远程仓库不相符的错误:

Could not resolve dependencies for project xxx: Failure to find xxx in https://maven-central.storage-download.googleapis.com/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of google-maven-central has elapsed or updates are forced

此时,则需要配置一下机器人maven的本地仓库.

新建maven配置文件

.travis.settings.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

~/build/项目地址(github项目为组织名+项目名,可以使用pwd来打印查看)/src/main/resources/lib

复制maven配置文件

.travis.yml

script:

- pwd

- cp .travis.settings.xml ~/.m2/settings.xml

PS: 如果你的pom.xml位于项目根文件夹,traivs会自动运行mvn test,此时可参考此文章进行设置。


作者信息:河北工业大学梦云智开发团队 潘杰