maven repackage模块解决依赖冲突

时间:2017-06-13 17:31:36

标签: java maven conflict

我有一个项目有2个模块,如下所示:

parent
├── SDK module 
└── service module

服务模块依赖于SDK模块。 SDK模块必须依赖于httpClient 3.x,但服务模块必须依赖于httpClient 4.x。

我知道spring有一个重新包装的cglib。所以我想重新打包httpClient 3.x到SDK模块来解决这个问题。

任何人都知道如何做到这一点?(也许是spring-boot:repackage?)

1 个答案:

答案 0 :(得分:0)

理想情况下,在开发中的服务中,我希望尽可能避免冲突的依赖项。

如果真的不在个人手中,你可以在你的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>