1. 問題の説明
ローカルに依存する 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>
2、解決策
どのような 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/ ディレクトリにパッケージ化されます。