pom.xml包冲突 使用 mvn dependency:tree > dep.txt 如果里面有两个不同版本的jar包 就有问题
eclipse mvn依赖工程里面 系统使用排在最上面的jar版本
\- com.taobao.hsf:hsf.notify.spring:jar:1.4.9.6:compile
[INFO] +- com.taobao.notify:notify-tr-client:jar:1.8.15:compile
[INFO] | +- com.taobao.notify:notify-utils:jar:1.8.15:compile
[INFO] | | +- org.springframework:spring:jar:2.5.1:compile
[INFO] | | +- org.jasypt:jasypt:jar:1.5:compile
[INFO] | | +- com.googlecode.aviator:aviator:jar:2.2.1:compile
[INFO] | | +- com.h2database:h2:jar:1.3.167:compile
[INFO] | | +- org.jdbi:jdbi:jar:2.38.1:compile
[INFO] | | \- org.mockito:mockito-all:jar:1.9.0:compile
[INFO] | +- com.taobao.notify:notify-common:jar:1.8.15:compile
[INFO] | +- com.taobao.notify:notify-remoting:jar:1.8.15:compile
[INFO] | | \- com.taobao.gecko:gecko:jar:1.1.4-SNAPSHOT:compile
[INFO] | +- com.taobao.notify:notify-store4j:jar:1.8.15:compile
[INFO] | \- com.google.code.gson:gson:jar:2.2.2:compile
[INFO] \- com.google.protobuf:protobuf-java:jar:2.3.0:compile
下面就是去掉 +- org.springframework:spring:jar:2.5.1:compile的依赖(<groupId>org.springframework</groupId><artifactId>spring</artifactId>)
后面改用了用hsf.notify.spring出现了一个新问题:java.lang.NoSuchMethodError: com.taobao.eagleeye.EagleEye.rpcClientSend()V
原因:notify1.8.15使用了eagleeye高版本,而使用hsf.notify.spring会不引用eagleeyejar包,这样系统会默认取之前引用的eagleeye版本,只tddl引用了eagleeye1.0.0低版本
版本问题一定要注意:开发二方库的规则,高版本尽量要支持低版本的所有方法,要不调用方升级了,而低版本的二方库不升级就有问题
<!-- 接入notify add by fukang.shengfk 2013.12.18 start -->
<!-- 使用hsf容器方便升级 -->
<dependency>
<groupId>com.taobao.hsf</groupId>
<artifactId>hsf.notify.spring</artifactId>
<version>1.4.9.6</version>
<exclusions>
<!-- 因为hsf.notify.spring 1.4.9.6版本里面带有2.5.1spring,而这个项目上面都是引用3.1.1版本的spring,所以需要这里特殊去掉spring引用 -->
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--
<dependency>
<groupId>com.taobao.notify</groupId>
<artifactId>notify-tr-client</artifactId>
<version>1.8.15</version>
</dependency>
-->
eclipse mvn依赖工程里面 系统使用排在最上面的jar版本
\- com.taobao.hsf:hsf.notify.spring:jar:1.4.9.6:compile
[INFO] +- com.taobao.notify:notify-tr-client:jar:1.8.15:compile
[INFO] | +- com.taobao.notify:notify-utils:jar:1.8.15:compile
[INFO] | | +- org.springframework:spring:jar:2.5.1:compile
[INFO] | | +- org.jasypt:jasypt:jar:1.5:compile
[INFO] | | +- com.googlecode.aviator:aviator:jar:2.2.1:compile
[INFO] | | +- com.h2database:h2:jar:1.3.167:compile
[INFO] | | +- org.jdbi:jdbi:jar:2.38.1:compile
[INFO] | | \- org.mockito:mockito-all:jar:1.9.0:compile
[INFO] | +- com.taobao.notify:notify-common:jar:1.8.15:compile
[INFO] | +- com.taobao.notify:notify-remoting:jar:1.8.15:compile
[INFO] | | \- com.taobao.gecko:gecko:jar:1.1.4-SNAPSHOT:compile
[INFO] | +- com.taobao.notify:notify-store4j:jar:1.8.15:compile
[INFO] | \- com.google.code.gson:gson:jar:2.2.2:compile
[INFO] \- com.google.protobuf:protobuf-java:jar:2.3.0:compile
下面就是去掉 +- org.springframework:spring:jar:2.5.1:compile的依赖(<groupId>org.springframework</groupId><artifactId>spring</artifactId>)
后面改用了用hsf.notify.spring出现了一个新问题:java.lang.NoSuchMethodError: com.taobao.eagleeye.EagleEye.rpcClientSend()V
原因:notify1.8.15使用了eagleeye高版本,而使用hsf.notify.spring会不引用eagleeyejar包,这样系统会默认取之前引用的eagleeye版本,只tddl引用了eagleeye1.0.0低版本
版本问题一定要注意:开发二方库的规则,高版本尽量要支持低版本的所有方法,要不调用方升级了,而低版本的二方库不升级就有问题
<!-- 接入notify add by fukang.shengfk 2013.12.18 start -->
<!-- 使用hsf容器方便升级 -->
<dependency>
<groupId>com.taobao.hsf</groupId>
<artifactId>hsf.notify.spring</artifactId>
<version>1.4.9.6</version>
<exclusions>
<!-- 因为hsf.notify.spring 1.4.9.6版本里面带有2.5.1spring,而这个项目上面都是引用3.1.1版本的spring,所以需要这里特殊去掉spring引用 -->
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--
<dependency>
<groupId>com.taobao.notify</groupId>
<artifactId>notify-tr-client</artifactId>
<version>1.8.15</version>
</dependency>
-->