我有一個Play v1.2.5應用程序,我已配置爲依賴於Github release binary。爲了支持我創建一個自定義庫在我dependencies.yml文件,如下所示:如何獲得Play v1.2.5安裝存儲爲github發佈二進制文件的依賴關係
- github:
type: http
artifact: "https://github.com/[organisation]/[module]/releases/download/[revision]/[module]-[revision].zip"
contains:
- tazmaniax -> *
這正常工作和常春藤是能夠構造正確的URL但隨後由於獲取Github上重定向的二進制資源問題到AWS S3並在此過程中將協議從https更改爲http。顯然,標準的Java HttpUrlConnection是Ivy默認使用的,只要協議沒有改變,它就會遵循重定向。所以我想看看我能如何解決這個問題。
Play v1.2.5正在使用Ivy v2.2.0封面。常春藤使用類URLHandlerRegistry來決定是否使用HttpUrlConnection,或者如果Apache HttpClient v3.x存在於類路徑中。 HttpClient v3.x可能導航使用不同協議的重定向,但在任何情況下,默認的框架庫都不包含HttpClient v3.x,我試圖避免自定義Play,因爲我需要將它部署到Heroku。
歸根結底,這是一個常青藤發行(或Github上取決於你的觀點),所以從長遠來看,有三種選擇:
- 補丁org.apache.ivy.util.url.BasicURLHandler支持與處理重定向協議根據Download binary file from Github using Java更改,然後獲取未來Play版本中包含的Ivy的更新版本。
- 修補org.apache.ivy.util.url.URLHandlerRegistry以加載更新版本的Apache HttpClient,例如v4.2,並確保將來的Play版本中包含HttpClient lib以及修補程序。然而,它看起來早期版本的HttpClient v4.2本身有相同的問題,從https重定向到http,HTTPClient unable to establish route between https and http
- 獲取Github更改它的重定向策略,以保持在這種情況下https相同的協議。
任何人都可以建議什麼是最佳行動方案? THX
== UPDATE 2013年9月6日==
在重定向協議的變化已經被github上解決,現在重定向保留的請求AWS S3的「https」協議。但是現在,當依賴關係被解析時,在重定向時會返回403,這是因爲AWS S3認證需要缺少Cookie,這是另一個與Ivy使用HttpUrlConnection有關的問題,我猜測上述選項仍然大部分都是相關的重點是添加缺少的Cookie支持。
== UPDATE二零一四年十月一十八日==
我試圖運行play deps . --sync -Djsse.enableSNIExtension=false
的建議但問題仍時有發生。相關的響應頭:
Date:Sat, 18 Oct 2014 09:56:33 GMT
Location:https://s3.amazonaws.com/github-cloud/releases/25392769/2302c572-56ac-11e4-9623-393cafb2c0e5.zip?response-content-disposition=attachment%3B%20filename%3Dplay-markdown-1.9.zip&response-content-type=application/octet-stream&AWSAccessKeyId=AKIAISTNZFOVBIJMK3TQ&Expires=1413626253&Signature=7gI7fe0CeCzuu73KmcklIVSVPSQ%3D
Server:GitHub.com
Set-Cookie:user_session=692wy9ubPTtFAGT-WGjwFdykXc06-SELUtGGhg3i56vyT0SEVEI5UVnhkDsdQigEQagDUq54dyjTSEUW; path=/; expires=Sat, 01-Nov-2014 09:56:33 GMT; secure; HttpOnly
Set-Cookie:_gh_sess=eyJsYXN0X3dyaXRlIjoxNDEzNjI1ODE1MzkwLCJzZXNzaW9uX2lkIjoiYzFmNzQ0NDRlNmMzYjAwZTE2ZDg4MzVhMDJjNmVhZmMiLCJzcHlfcmVwbyI6InRhem1hbmlheC9wbGF5LW1hcmtkb3duIiwic3B5X3JlcG9fYXQiOjE0MTM2MjYxOTMsInJlZmVycmFsX2NvZGUiOiJodHRwczovL2dpdGh1Yi5jb20vaXZheW5iZXJnL3NlbGVjdDIvY29tbWl0cy9tYXN0ZXIiLCJjb250ZXh0IjoiLyJ9--8c45e0231ec4859b693de524e966cbc4a6582442; path=/; secure; HttpOnly
Status:302 Found
Strict-Transport-Security:max-age=31536000; includeSubdomains; preload
我相信這個問題是常春藤(或稱爲常春藤相關HTTP庫)未在302設置cookie,然後下面的位置,而那些餅乾參數失敗與403.
爲什麼不下載該文件並將其放置在您自己的存儲庫中? – sdespolit
@sdespolit,是的我知道如何做到這一點,但只是試圖只使用提供的依賴機制,這是非常方便,如果只有github不會混亂協議如此接近工作 – tazmaniax
寫一個代理是能夠處理https到http切換可能? – jp10k