我有一个项目,2个模块象下面这样:行家重新包装模块来解决冲突的依赖
parent
├── SDK module
└── service module
服务模块依赖SDK模块。 SDK模块必须依赖于httpClient 3.x,但服务模块必须依赖于httpClient 4.x.
我知道春天有一个重新包装的cglib。所以我想重新打包httpClient 3.x到SDK模块来解决这个问题。
任何人都知道如何做到这一点?(也许春天启动:重新包装?)
我有一个项目,2个模块象下面这样:行家重新包装模块来解决冲突的依赖
parent
├── SDK module
└── service module
服务模块依赖SDK模块。 SDK模块必须依赖于httpClient 3.x,但服务模块必须依赖于httpClient 4.x.
我知道春天有一个重新包装的cglib。所以我想重新打包httpClient 3.x到SDK模块来解决这个问题。
任何人都知道如何做到这一点?(也许春天启动:重新包装?)
理想的情况下,正在开发一个服务,我想避免冲突的依赖,尽可能。
如果这确实不在个人的手中,您可以在您的pom依赖声明中使用<exclusions>
以避免冲突版本。只是想,它周围的样品将是这样的: -
SDKModule/pom.xml
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>3.1</version><!--just an example-->
</dependency>
ServiceModule/pom.xml
<dependency>
<groupId>some-group-id</groupId>
<artifactId>sdk-module</artifactId>
<version>some.version</version>
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--This adds an exclusive version of httpclient not included via sdk-module-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
maven auto在服务模块中排除httpClient 3.x。但是会有运行时异常,因为SDK模块中的某些代码只能在httpClient 3.x中找到类或方法。 – bluearrow
您可以定义服务模块HttpClient的4.X,但我认为最终会导致服务模块对SDK模块具有依赖性,这不是没有理由的,所以它使用SDK模块的某些部分...所以问题是为什么不使用httpC lient 3.x在服务模块?还是升级SDK模块? – khmarbaise
@khmarbaise前段时间,我将某人的SDK代码导入到我的项目中。 SDK仅在httpClient 3.x中使用一些类。它浪费了大量的时间来拷贝源代码来升级。所以我想找出一条适合未来的优雅之路。 – bluearrow