串接幣安 API (binance-api-client
) 遇到 Could not resolve dependencies 問題
先前在串接幣安的 API 時,遇到了 maven 無法 resolve dependencies 的問題
(想跳到解決方法直接拉到最後面)
在官方的 API 文件中,我們可以看到一段 maven dependency code:
<dependency>
<groupId>com.binance.api</groupId>
<artifactId>binance-api-client</artifactId>
<version>1.0.0</version>
</dependency>
然而當你實際把這段 code 加到 pom.xml 中後,會發現 maven 沒辦法下載 library,可能會出現下面的錯誤訊息:
Could not resolve dependencies for project com.anue:ws:jar:0.0.1: Failed to collect dependencies at com.binance.api:binance-api-client:jar:1.0.0: Failed to read artifact descriptor for com.binance.api:binance-api-client:jar:1.0.0: Could not transfer artifact com.binance.api:binance-api-client:pom:1.0.0
實際到 maven center 去搜尋 Binance 也會發現,找到的 API 看起來都很奇怪,也都沒什麼人在用
於是只好到他的 github issue 裡面去找看看有沒有人也遇到同樣的狀況,果然發現了事有蹊蹺!
在 issue 列表最下面有一個編號#3的issue,從2017年就被開出來了,裡面會看到眾多工程師們大聲疾呼希望 API 能趕快上 maven center
什麼?!原來你們根本沒有在 maven 上面嗎?!難怪會根本沒辦法載啊!
但堂堂一個幣安的 API 怎麼會不在 maven 上面呢?就跟百貨公司美食街沒有麥當勞一樣不合理啊(?
直到我把幾個 issue 翻了以後才發現背後的原因,在編號#183的 issue 中有人提問幣安到底在搞什麼,repository 的主要維護者 joaopsilva 在下面留言道出了原因
原來官網連結到的這個 API repository 嚴格來說並不是真的官方 API,是 joaopsilva 一個人自己在維護的,嚴格來說只是個社群開發的 API,而 joaopsilva 也一直在申請把 library 放到 maven center 上,但是 maven 嚴格的審核要求他如果 group id 掛com.binance.api
,就必須要有幣安的內部正式員工認證這個 API 是由幣安去維護的,joaopsilva 也寫信給幣安的CTO想要解決這個問題,但至今仍沒有回覆
好吧,看起來近期內要能夠從 maven 安裝 SDK 是沒有指望了,所以我也找到了兩個方法,順便補充在這邊:
- 把整個 repo 自己 clone 下來,然後放到自己的 maven library 裡面,這也是開發者 joaopsilva 建議的方法,這種可能會很 critical 的 library 自己維護也比較好
- 可以到審查比較不嚴格的 JitPack 去下載 library,方法如下:
先新增 JitPack 的repositories:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
再來安裝 dependency:
<dependency>
<groupId>com.github.binance-exchange</groupId>
<artifactId>binance-java-api</artifactId>
<version>master-SNAPSHOT</version>
</dependency>
由於我要使用的功能就只有行情的顯示而已,不牽涉交易所以沒那麼 critical ,所以最後就決定直接用 JitPack 的方法來下載囉