Gradleでプロキシーの設定ってどうやるの?

ロキシー設定が必要な会社内で、Greziを動かそうとしたらエラーになった。
いろいろ試してみたけど、ダメだ。

エラー

Greziを使った場合
    :compileJava UP-TO-DATE
    :compileGroovy
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Could not resolve group:asm, module:asm, version:3.2.
    Required by:
        com.odelia.grezi:bgoetzmann-grezi-tip:0.1-SNAPSHOT
    Cause: java.lang.reflect.UndeclaredThrowableException (no error message)
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    BUILD FAILED
簡単なアプリとbuild.gradle
println new URL("http://www.google.co.jp/").getText()
apply plugin: 'groovy'

sourceSets {
  main.groovy.srcDir 'src'
}

repositories {
    mavenCentral()
    flatDir(dirs: 'libs')
}

dependencies {
    groovy 'org.codehaus.groovy:groovy-all:1.8.0'
}

task testProxy(type: JavaExec) {
    description = "Run testProxy'"
    main = "testProxy"
    classpath = sourceSets.main.runtimeClasspath
    args "testProxy.groovy"
}

エラー

[D:\workspace\GroovySample\gradle\proxy]gradle testProxy
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:testProxy
Exception in thread "main" java.net.UnknownHostException: www.google.co.jp
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
        at sun.net.www.http.HttpClient.New(HttpClient.java:306)
        at sun.net.www.http.HttpClient.New(HttpClient.java:323)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:788)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:729)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:654)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:977)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.newReader(DefaultGroovyMethods.java:14191)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.getText(DefaultGroovyMethods.java:12649)
        at org.codehaus.groovy.runtime.DefaultGroovyMethods.getText(DefaultGroovyMethods.java:12634)
        at org.codehaus.groovy.runtime.dgm$315.invoke(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
        at testProxy.run(testProxy.groovy:1)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1055)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:885)
        at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:793)
        at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:776)
        at org.codehaus.groovy.runtime.InvokerHelper.runScript(InvokerHelper.java:394)
        at org.codehaus.groovy.runtime.InvokerHelper$runScript.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
        at testProxy.main(testProxy.groovy)

FAILURE: Build failed with an exception.

試したこと

12.3. Accessing the web via a proxyを参考にあれこれ。

  • gradle.propertiesをカレントに置く
systemProp.proxySet='true'
systemProp.http.proxyHost='プロキシーサーバー'
systemProp.http.proxyPort='8080'
  • gradle.propertiesをホーム(C:\Documents and Settings\orangeclover\.gradle)に置く
systemProp.proxySet='true'
systemProp.http.proxyHost='プロキシーサーバー'
systemProp.http.proxyPort='8080'
  • gradle.properties 「http.」なし
systemProp.proxySet='true'
systemProp.proxyHost='プロキシーサーバー'
systemProp.proxyPort='8080'
  • build.gradle に設定する
System.properties['proxySet']='true'
System.properties['proxyHost']='プロキシーサーバー'
System.properties['proxyPort']='8080'
  • build.gradle 「http.」なし
System.properties['proxySet']='true'
System.properties['http.proxyHost']='プロキシーサーバー'
System.properties['http.proxyPort']='8080'
  • JAVA_OPTSに設定する
set JAVA_OPTS=-Dhttp.proxyHost=プロキシーサーバー -Dhttp.proxyPort=8080
  • JAVA_OPTSに設定する 「http.」なし
set JAVA_OPTS=-DproxyHost=プロキシーサーバー -DproxyPort=8080
  • gradleに-D指定
gradle -Dhttp.proxyHost=プロキシーサーバー -Dhttp.proxyPort=8080
  • gradleに-D指定「http.」なし
gradle -DproxyHost=プロキシーサーバー -DproxyPort=8080
  • gradle.bat のDEFAULT_JVM_OPTSに設定
set DEFAULT_JVM_OPTS=-Dhttp.proxyHost=プロキシーサーバー -DproxyPort=8080
  • gradle.bat のDEFAULT_JVM_OPTSに設定「http.」なし
set DEFAULT_JVM_OPTS="-DproxyHost=プロキシーサーバー -DproxyPort=8080"
  • gradle.bat
set DEFAULT_JVM_OPTS=-Dhttp.proxyHost=プロキシーサーバー -Dhttp.proxyPort=8080
  • gradle.bat のGRADLE_OPTSに設定「http.」なし
set GRADLE_OPTS="-DproxyHost=プロキシーサーバー -DproxyPort=8080"
  • gradle.bat のGRADLE_OPTSに設定
set GRADLE_OPTS="-Dhttp.proxyHost=プロキシーサーバー -Dhttp.proxyPort=8080"
  • gradle.bat のJavaコマンドオプションに直書き
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -Dhttp.proxyHost=プロキシーサーバー -Dhttp.proxyPort=8080 -classpath "%CLASSPATH%" org.gradle.launcher.GradleMain %CMD_LINE_ARGS%
  • gradle.bat のJavaコマンドオプションに直書き「http.」なし
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -DproxyHost=プロキシーサーバー -DproxyPort=8080 -classpath "%CLASSPATH%" org.gradle.launcher.GradleMain %CMD_LINE_ARGS%

Groovyにプロキシを設定した場合

プロキシ設定ない場合
[C:\bin\grezi\bgoetzmann-grezi-tip]groovy -c UTF-8 D:\workspace\GroovySample\Groovy\JGGUG_Camp2011\GDK48\1341142\introfx.groovy
Caught: java.net.UnknownHostException: www.googleapis.com
java.net.UnknownHostException: www.googleapis.com
        at introfx.run(introfx.groovy:6)
        

エラーになる


ロキシー設定アリの場合
[C:\bin\grezi\bgoetzmann-grezi-tip]groovy -c UTF-8 -Dhttp.proxyHost=プロキシーサーバー -Dhttp.proxyPort=8080  D:\workspace\GroovySample\Groovy\JGGUG_Camp2011\GDK48\1
Caught: java.net.UnknownHostException: www.googleapis.com
java.net.UnknownHostException: www.googleapis.com
        at introfx.run(introfx.groovy:6)
        
ロキシー設定アリの場合 「http.」なし
[C:\bin\grezi\bgoetzmann-grezi-tip]groovy -c UTF-8 -DproxyHost=プロキシーサーバー -DproxyPort=8080 D:\workspace\GroovySample\Groovy\JGGUG_Camp2011\GDK48\1341142\intr
loves Java, Groovy, Apple products and gadgets

動作する

[C:\bin\grezi\bgoetzmann-grezi-tip]set JAVA_OPTS=-DproxyHost=プロキシーサーバー -DproxyPort=8080
[C:\bin\grezi\bgoetzmann-grezi-tip]groovy -c UTF-8 D:\workspace\GroovySample\Groovy\JGGUG_Camp2011\GDK48\1341142\introfx.groovy
loves Java, Groovy, Apple products and gadgets

動作する


Groovyだと有効になるので、プロキシーサーバの指定に誤りがあるわけでもない。
Gradleでプロキシーサーバを指定するのってどうやるの?


もしかして、プロキシーの問題ではない??
明日、-debug付けたログを確認しよう・・・


コメント

ksky 2011/12/07 13:45 
つ http://issues.gradle.org/browse/GRADLE-1962

既知の問題のようだ。
教えてくれてありがとう

環境

  • Java SE 7.0.1
  • Groovy 1.8.4
  • Gradle 1.0-milestone-6






Hans Dockter、Tim Berglund、Matthew Mccullough
参考価格 : ¥ 2,051


価格: ¥ 2,029


価格は記載時点のものです。購入前にAmazonでご確認ください。





関谷 和愛、上原 潤二、須江 信洋、中野 靖治
価格: ¥ 3,360
価格は記載時点のものです。購入前にAmazonでご確認ください。


「プログラミングGROOVY」正誤表
今日からGroovyを始めるための4つのステップ