maven打包jar — 将本地jar包也打进去

一、问题描述

如何将本地依赖的jar包也打包到jar里,如下图所示,在项目里依赖了taobao,pdd的sdk,通过本地的方式引入到项目里:

<!-- 淘宝客SDK-->
<dependency>
    <groupId>taobao</groupId>
    <artifactId>taobao</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${pom.basedir}/lib/taobao-sdk.jar</systemPath>
</dependency>

<!-- 拼多多SDK -->
<dependency>
    <groupId>pop</groupId>
    <artifactId>pop</artifactId>
    <version>1.11.5</version>
    <scope>system</scope>
    <!-- <systemPath>${project.basedir}/lib/pop-sdk-1.11.5-all.jar</systemPath>-->
    <systemPath>${pom.basedir}/lib/pop-sdk-1.11.5-all.jar</systemPath>
</dependency>

二、解决方法

看你要打成什么jar包,如果是springboot项目,打包成可运行的jar,做如下配置:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

includeSystemScope设置成true,即可,如果是打包成普通的jar包,配置如下:

<resources>
  <resource>
    <!--本地jar的目录-->
    <directory>lib</directory>
    <!--打包时,目标jar存放位置-->
    <targetPath>BOOT-INF/lib/</targetPath>
    <includes>
      <include>**/*.jar</include>
    </includes>
  </resource>
</resources>

打成的jar包时,会将本地的jar包打到BOOT-INF/lib/目录里。

经验分享 程序员 微信小程序 职场和发展