为了摆脱丝带和传递依赖的,一会加在其pom.xml
如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</exclusion>
<exclusion>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-eureka</artifactId>
</exclusion>
<!-- Eureka needs com.netflix.http4.MonitoredConnectionManager
so don't exclude this dependency
<exclusion>
<artifactId>ribbon-httpclient</artifactId>
<groupId>com.netflix.ribbon</groupId>
</exclusion>
-->
<exclusion>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-loadbalancer</artifactId>
</exclusion>
</exclusions>
</dependency>
最后,这消除关于从最终工件依赖关系的3MB。
这远远不仅仅是排除像spring-cloud-starter-ribbon
这样的单一依赖关系,而且它需要更深入的Spring Cloud Netflix库内部知识来发现哪些依赖关系可以被删除。
@spencergibb:我理解你的观点,但如果让用户自己去做“这么简单”,我不明白为什么你在为Consul和其他人提供支持时不能在框架内做到这一点。至少,只有那些知道自己在做什么并会让整个社区受益的人才会这样做。
让功能区退出游戏还可确保功能区组件在构建不需要它们的应用程序时不会被“初始化”。
我明白了,但它可能已经被颠倒过来了:只有Eureka支持的'spring-cloud-starter-eureka'和带有所有Ribbon功能的'spring-cloud-starter-ribbon',包括Ribbon-Eureka支持。 这将提供更大的灵活性,因为人们更有可能使用没有功能区的Eureka,而不是使用尤里卡的功能区(大多数“独立”服务仅需要向Eureka注册)。 这不仅减少了应用程序的大小,而且还减少了潜在的问题。在类路径上额外使用无用的库可能会触发可能会干扰其他应用程序的自动配置。 –
我不会做相反的事情,我需要丝带没有尤里卡其他实现发现(领事,动物园管理员等)。排除一个是否是一件大事? – spencergibb