如何让PlayV1.2.5安装存储为github发行版二进制文件的依赖项
我有一个Play v1.2.5应用程序,我已将其配置为依赖于一个。为了支持这一点,我在dependencies.yml文件中创建了一个自定义存储库,如下所示:如何让PlayV1.2.5安装存储为github发行版二进制文件的依赖项,github,playframework,ivy,dependency-management,playframework-1.x,Github,Playframework,Ivy,Dependency Management,Playframework 1.x,我有一个Play v1.2.5应用程序,我已将其配置为依赖于一个。为了支持这一点,我在dependencies.yml文件中创建了一个自定义存储库,如下所示: - github: type: http artifact: "https://github.com/[organisation]/[module]/releases/download/[revision]/[module]-[revision].zip" contains:
- github:
type: http
artifact: "https://github.com/[organisation]/[module]/releases/download/[revision]/[module]-[revision].zip"
contains:
- tazmaniax -> *
这是正确的,并且Ivy能够构造正确的URL,但是在获取二进制资源时出现问题,因为Github重定向到AWS S3,并在这个过程中将协议从https更改为http。显然,标准的JavaHttpUrlConnection(Ivy使用的默认连接)将遵循重定向,只要协议没有更改。所以我想看看如何解决这个问题
Play v1.2.5在封面下使用了Ivy v2.2.0。Ivy使用类URLHandlerRegistry来决定是否使用HttpUrlConnection,或者是否使用ApacheHttpClient v3.x(如果类路径中存在)。HttpClient v3.x可能会导航使用不同协议的重定向,但在任何情况下,默认框架libs都不包括HttpClient v3.x,我试图避免自定义播放,因为我需要将其部署到Heroku
最终,这是一个常春藤问题(或Github,取决于您的观点),因此从长远来看,选择是:
playdeps--sync-djse.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
我确信问题在于Ivy(或Ivy所称的相关HTTP库)没有在302上设置cookie,然后在没有这些cookie参数的位置上跟踪403失败。我遇到了一个类似的问题,通过禁用Java HttpUrlConnection进行的一些检查(重定向失败)解决了这个问题。您可以按照建议尝试标记-djse.enableSNIExtension=false
为什么不下载文件并将其放入您自己的存储库?@sdesplit,是的,我知道如何做到这一点,但只是尝试使用提供的依赖机制,如果github不会弄乱协议,它会更加方便,并且非常接近工作。写一个能够处理https到http切换的代理可能吗?更新了问题,以反映出问题现在是关于缺少对cookie的支持重定向而不是在重定向上更改协议我尝试了命令行playdeps--资源的sync-djse.enableSNIExtension=false
,但仍然得到403