最近才开始用springboot,所以遇到一些坑,记录下,当我们项目遇到自己引的本地jar包时,是需要在maven里做一些配置才能在打war包的时候成功将这些打包进我们的war包,从而成功部署到tomcat上
1. 先在pom.xml里面将这本地Jar包引入。其中groupId、artifactId、version都是可以自己随意填的,。然后scope这里需要填写system,systemPath这里需要填写你项目中第三方Jar的位置。${basedir}代表了你这个项目的根目录,也就是ProjectDirectory这个文件夹的目录,后面就根据Jar包在项目中的位置,照着下面的例子填写即可(如果在Intellij IDEA里面,能出现自动提示,就证明引入正确了):
<!--钉钉工具包,如缺失请到钉钉服务器开发文档下载-->
<dependency>
<groupId>com.taobao.top</groupId>
<artifactId>top-api-sdk</artifactId>
<version>ding-open-mc-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/taobao-sdk-java-auto_1479188381469-20190227.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包的API,进行调试了和启动,但是坑也在这里,项目发布到线上环境的时,本地jar包并没有被打包进war包里,具体可以解压war包搜索是否存在该jar包,然后重新执行打包命令
clean package -Dmaven.test.skip=true
2.所以要让war包包含本地jar包,还需在pom加一个配置,在maven插件配置includeSystemScope为true,表示打包包含本地jar包
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>