我有一個項目,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