maven项目引入第三jar包时,打包无法引入问题

近期在公司安排项目,钉钉企业内部应用开发时,遇到棘手问题,引入钉钉SDK,idea工具使用跑项目时没有任何问题,打包之后却,无法将SDK打到war 中。

pom配置如下:

maven项目引入第三jar包时,打包无法引入问题

在这里,说下如何解决类似的问题。首先,我们在通过上述方式引入的时候只是说我们run的时候自己本地项目知道根据你导入jar的路径去加载jar包,所以会没问题。但是!打包之后,这个jar包是不会被打包进去的,导致报错。所以,我们想要正常运行,也要把jar包打包到项目中。这里涉及到两种形式的包:jar包和war包。首先,不管我们打何种包都要经过相同的操作:

项目结构:

maven项目引入第三jar包时,打包无法引入问题

 

1.将包引入到自己的资源文件下:比如

maven项目引入第三jar包时,打包无法引入问题

 

 

我这里是springboot项目,在resources下建立了lib文件夹,将自己本地的jar引入到了lib下。 <!--钉钉工具包,如缺失请到钉钉服务器开发文档下载-->

<dependency>

<groupId>com.taobao.top</groupId>

<artifactId>top-api-sdk-dev</artifactId>

<version>ding-open-mc-SNAPSHOT</version>

<scope>system</scope>

<systemPath>${pom.basedir}/lib/taobao-sdk-java-auto_1479188381469-20191125.jar</systemPath>

</dependency>

<dependency>

<groupId>com.taobao.top</groupId>

<artifactId>lippi-oapi-encrpt</artifactId>

<version>dingtalk-SNAPSHOT</version>

<scope>system</scope>

<systemPath>${pom.basedir}/lib/lippi-oapi-encrpt.jar</systemPath>

</dependency>

然后,光做这些还是不够的,这样只能保证我们在本地能够正常运行,打包还是不会被打包进去。所以下面才是重点中的重点。

如果是打jar包:我们需要在引入的springboot的maven插件中告诉maven,将我们的刚刚引入的作用域为system的本地jar也打包进来,如图所示:

<!--打jar 包时使用下配置-->

<!-- <configuration>

<includeSystemScope>true</includeSystemScope>

</configuration>-->

</plugin>

如果是打war包,需要在maven的war插件中引入你的本地jar包

<!-- 打war包时,引入第三方依赖 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<configuration>

<webResources>

<resource>

<!-- 第三方jar 包路径-->

<directory>../dingding/lib</directory>

<targetPath>WEB-INF/lib</targetPath> 

<filtering>false</filtering>           

<!-- <includes>           

<include>**/*.jar</include>            

</includes>-->

</resource>

</webResources>

</configuration>

</plugin>

 

direcotry:你本地的jar包的路径

targetPath:将你的jar包打到WEB-INF/lib下

综述:通过上面共同的操作+不同形式包的插件部分的操作就可以解决问题了。以上就是笔者要说的问题了。