自從我編寫了很多代碼之後,已經有一段時間了,因此請耐心等待一些基本問題!管理軟件包依賴關係
我正在嘗試爲Atlassian Confluence編寫一個與另一個第三方平臺集成的插件。該第三方平臺提供了一個SDK庫,以用於其REST API。這是一個方便的使用方法,因爲我只是試圖快速構建一個概念的原型。我使用Java 1.8,IntelliJ和Maven和Confluence 5.8。
這是我的第一個問題 - 我想包含作爲依賴項的第三方SDK庫具有它自己的依賴關係。其中,這是一個例子:
<!-- HTTP client: jersey-client -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey-version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>${jersey-version}</version>
</dependency>
<!-- JSON processing: jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-version}</version>
</dependency>
它繼續,但你明白了。我的第一個問題是,我無法成功添加第三方SDK庫,並且無需將所有SDK的依賴項添加到我自己的項目中即可進行編譯。 這是預期的嗎?它大大膨脹了我的罐子的大小。
這會導致下一個問題。 Confluence已經使用了Jersey庫(1.8-atlassian-16)的老版本和Atlassian定製版本,我猜想它與SDK庫使用的新澤西庫(1.19.1)發生衝突。如果我在我的項目中指定了Atlassian Jersey版本,它會編譯並安裝,但在嘗試運行時會失敗。如果我指定SDK庫使用的Jersey版本,它會編譯但不能正確安裝。 有什麼我可以做的關於澤西圖書館版本差異,以便我可以在我的項目中使用SDK庫?
如果有要求,我會提供錯誤的詳細信息,但我很確定它與澤西島版本衝突有關,因爲這兩種情況下的錯誤都是「NoSuchMethod」和類別強制轉換澤西類的異常。