如何让PlayV1.2.5安装存储为github发行版二进制文件的依赖项

如何让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:

我有一个Play v1.2.5应用程序,我已将其配置为依赖于一个。为了支持这一点,我在dependencies.yml文件中创建了一个自定义存储库,如下所示:

    - 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,取决于您的观点),因此从长远来看,选择是:

  • 修补程序org.apache.ivy.util.url.basicollHandler,以支持根据处理协议更改的重定向,然后在未来的播放版本中包含更新版本的ivy
  • 修补程序org.apache.ivy.util.url.URLHandlerRegistry,以加载apache HttpClient的最新版本,例如v4.2,并确保HttpClient lib与修补程序一起包含在未来的播放版本中。但是,HttpClient v4.2的早期版本本身似乎也存在从https重定向到http的相同问题
  • 让Github更改其重定向策略,以便在本例中保持相同的协议https
  • 有人能就最好的行动方案提出建议吗?Thx

    ==2013年9月6日更新==

    github已经解决了重定向协议的更改,现在重定向保留了AWS S3请求的“https”协议。然而,现在当解决依赖关系时,重定向返回403,这似乎是AWS S3身份验证所需的缺失cookie,这是Ivy使用HttpUrlConnection的另一个问题,我想,除了重点添加缺失cookie支持外,上述选项仍然是最相关的

    ==2014年10月18日更新==

    我试着运行
    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