为gradle-vfs插件配置代理

时间:2016-05-13 10:40:55

标签: gradle vfs apache-commons-vfs

TL; DR:

如何配置gradle-vfs插件使用的https代理?它似乎忽略了普通的java / gradle代理配置。

完整详情

基于此gradle file我尝试使用gradle从asciidocs创建reveal.js幻灯片。

我已使用gradle.properties文件配置代理设置,其内容类似于:

systemProp.http.proxyHost=myproxy
systemProp.http.proxyPort=8080
systemProp.http.nonProxyHosts=localhost
systemProp.https.proxyHost=myproxy
systemProp.https.proxyPort=8080
systemProp.https.nonProxyHosts=localhost

虽然此配置适用于gradle,但在执行java版本(它下载插件和依赖项)时,参考构建文件中使用的vfs将失败:

:download FAILED

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\workspaces\myproject\build.gradle' line: 47

* What went wrong:
Execution failed for task ':download'.
> Could not connect to HTTP server on "github.com".

第47行是此块中cp的第一个开头:

task download << {
    mkdir downloadDir
    vfs {
         cp "zip:https://github.com/asciidoctor/asciidoctor-reveal.js/archive/${asciidoctorBackendVersion}.zip!asciidoctor-reveal.js-${asciidoctorBackendVersion}",
            templateDir, recursive:true, overwrite:true
        cp "zip:https://github.com/hakimel/reveal.js/archive/${revealjsVersion}.zip!reveal.js-${revealjsVersion}",
            revealjsDir, recursive:true, overwrite:true
    }
}

1 个答案:

答案 0 :(得分:1)

一个(我的)解决方案是添加定义代理参数的vfs选项。 这可能更复杂,例如通过构建一个从系统环境中派生参数的任务,但这个工作起作用:

task download << {
    mkdir downloadDir
    vfs {
        options 'vfs.http.proxyHost' : 'mylocalsquid.lokal'
        options 'vfs.http.proxyPort' : '3128'
        options 'vfs.https.proxyHost' : 'mylocalsquid.lokal'
        options 'vfs.https.proxyPort' : '3128'
        cp "zip:https://github.com/asciidoctor/asciidoctor-reveal.js/archive/${asciidoctorBackendVersion}.zip!asciidoctor-reveal.js-${asciidoctorBackendVersion}",
            templateDir, recursive:true, overwrite:true
        cp "zip:https://github.com/hakimel/reveal.js/archive/${revealjsVersion}.zip!reveal.js-${revealjsVersion}",
            revealjsDir, recursive:true, overwrite:true
    }
}

这来自http://ysb33r.github.io/groovy-vfs/1.0/docs/product-documentation.html

的文件