likes
comments
collection
share

maven打包本地jar到项目中

作者站长头像
站长
· 阅读数 11

maven项目中,我们的项目依赖一般取自local的repository或者远程的repository,比如下面这个配置:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.3.0</version>
</dependency>

一般而言,maven会先去本地的repository寻找,如果找不到,就会依据<repository>的定义,去远程的repository去找依赖。

不过有时候,我们依赖的jar并不在任何repository中,可能就是从第三方下载的1个sdk,怎么办?

maven打包本地jar到项目中

比如上面拼多多的sdk并没有提供maven依赖坐标,而是直接提供了1个下载地址。

maven有办法处理这种情况,它支持systemscope的定义方式,可以加载本地任意路径下的jar包。

1.直接将sdk下载到本地,在maven项目的根目录中新建1个lib文件夹。将下载的sdk拷贝到lib文件夹里。

maven打包本地jar到项目中

2.修改pom文件,添加如下依赖

maven打包本地jar到项目中

<dependency>
    <groupId>pdd</groupId>
    <artifactId>pop-sdk</artifactId>
    <type>jar</type>
    <version>1.15</version>
    <scope>system</scope>
    <systemPath>${pom.basedir}/lib/pop-sdk.jar</systemPath>
</dependency>

其中groupId和artifactId都可以自定义,systemPath配置的是我们maven项目的根目录下lib文件夹中的jar。

3.如果发现有些配置文件没有拷贝到打的jar中,可以修改pom文件,添加如下依赖。

<resources>
    <resource>
        <directory>${project.basedir}/lib</directory>
        <targetPath>/BOOT-INF/lib/</targetPath>
        <includes>
            <include>**/*.jar</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <targetPath>/BOOT-INF/classes</targetPath>
        <includes>
            <include>**/**</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
    </resource>
</resources>

这一步并不是必要的,我添加了下面的配置是因为打包以后apollo配置文件app.properties没拷贝到项目中导致拉取配置失败,项目没有启动起来。