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

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

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

环境:java 1.8 + maven 3.3

添加本地仓库

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

<project>
...
    <repositories>
        <repository>
            <id>local-maven-repository</id>
            <url>file://${basedir}/src/main/resources/lib/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
...
</project>

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

添加依赖

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

    <dependency>
       <groupId>com.mengyunzhi.core</groupId>
       <artifactId>Share</artifactId>
       <version>1.0</version>
    </dependency>

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

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      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">

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

</settings>

复制maven配置文件

.travis.yml

      script:
        - pwd
        - cp .travis.settings.xml ~/.m2/settings.xml

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


至此,无论是开发环境、项目打包运行还是travis机器人测试,依赖的第三方jar包均可正常工作。



03-05 23:55