SpringBoot打包异常引入外部jar SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案
chaohen 人气:3由于项目需要,在需要打包的时候,由于引入的外部jar在本地是可以使用的,但是当打包后启动时报错,找不到对应的类。
使用
1、引入外部jar包
项目中简历文件夹lib
可以在resultces包下简历一个lib文件夹,将jar包扔进去:
在配置文件中引用
<dependency> <groupId>com.xx.xxx</groupId> //组织,随便命名 <artifactId>***</artifactId> //包的名字,随便命名 <version>1.1.2</version> //版本,随便命名 <scope>system</scope> //scope为system时,自动添加lib依赖包 <systemPath>${basedir}/src/main/resources/lib/**.jar</systemPath> //路径,这里我jar在resources目录的lib文件夹下,也可以放在跟目标,路径按需修改 </dependency>
2、项目打包
遇到问题
是由于项目打包时,不识别外部jar,又没有进行配置,继而导致出现问题。
解决方案
解决方式很简单,只需要在pom.xml里面配置下 includeSystemScope
就行。
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin>
PS:maven项目引入外部jar(打包是jar形式springboot项目)
1、在项目src同级目录建立一个lib目录,将jar包放入lib中
2、在pom.xml文件中引入依赖
<!-- 引入外部jar包 --> <dependency> <groupId>com.hikvision.artemis</groupId> <artifactId>sdk</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/lib/artemis-http-client-1.0-SNAPSHOT.jar</systemPath> </dependency>
groupId、artifactId、version可以随意写
3、外部jar包可能与本地中jar起冲突,需要排除,常见的是日志冲突,外部jar也有引入日志的jar。在项目运行时会出现警告。
可以在pom所在目录,使用cmd命令:mvn dependency:tree查看jar依赖关系,然后使用exclusions排除冲突的jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除jar冲突 --> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> </exclusions> </dependency>
这里是排除了日志,排除外部jar包中日志,若找不到依赖关系,再排除springboot自带的log。
总结
加载全部内容