spring-boot + storm 依赖的json-simple版本冲突
具体问题重现:
在做storm 整合spring-boot的时候,发现spring-boot的父依赖中引入了json-simple这个jar包,版本为1.1.1,而storm核心包storm-core的依赖的simple-json版本为1.1,这就导致了启动storm时候报ClassNotFound错误。
由于1.1.1的json-simple在spring-boot中是父级的父级引入的,导致pom中使用<exclusion>没有效果:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <exclusion> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> </exclusion> <relativePath /> <!-- lookup parent from repository --> </parent>
解决方法:
因为在spring-boot在properties中是使用properties指定json-simple的版本的,因此在项目的pom中,通过properties属性指定json-simple版本,覆盖spring-boot依赖的版本
<properties> <simple-json.version>1.1</simple-json.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <!-- 依赖版本 --> <mybatis.version>3.3.1</mybatis.version> <mybatis.spring.version>1.2.4</mybatis.spring.version> </properties>