3

サンプル スクリプト ss.groovy:

@Grab(group='org.codehaus.groovy.modules.http-builder', 
      module='http-builder', 
      version='0.5.0')
import groovyx.net.http.HTTPBuilder

println('done')

で実行すると、何らかの理由でロードに約25秒かかります

groovy ss.groovy

で実行すると〜5秒

groovy -Dgroovy.grape.autoDownload=false ss.groovy

このStackOverflowの説明に従って。手動で初期化してみました

Grape.enableAutoDownload = false
Grape.grab(group:'org.codehaus.groovy.modules.http-builder', 
           module:'http-builder',
           version:'0.5.0')
import groovyx.net.http.HTTPBuilder
println('done')

しかし、これはインポート時に失敗します:

/tmp/ss.groovy: 3: unable to resolve class groovyx.net.http.HTTPBuilder
 @ line 3, column 1.
  import groovyx.net.http.HTTPBuilder
  ^

次のいずれかを行う方法はありますか。

  • 成果物を自動的にダウンロードしないようにします (成果物がローカル キャッシュに既に存在している間に外部サイトがダウンするなど、他の問題を解決できるため、推奨されます)。
  • 他の方法で起動を高速化する

含まれているとは、すべての追加の指示がスクリプト内にある必要があることを意味します。そのようなものが存在しない場合は、受け入れ可能なデフォルト (たとえば、キャッシュされたアーティファクトの更新をチェックしないでください。ただし、それでもグローバルに自動ダウンロードを行いたいと思います)。いくつかの groovy 構成ファイル (例: ~/.groovy/grapeConfig.xml など) に入れることができます。

4

3 に答える 3

0

リポジトリマネージャをローカルにインストールしてみませんか?

http://nexus.sonatype.org/

Nexusを使用して、すべてのサードパーティリポジトリをプロキシおよびキャッシュします。Groovyは、ローカルキャッシュまたはNexusのいずれかから取得するように構成されています。

<ivysettings>
  <settings defaultResolver="downloadGrapes"/>
  <resolvers>
    <chain name="downloadGrapes">
      <filesystem name="cachedGrapes">
        <ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/>
        <artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/>
      </filesystem>
      <!-- Local Nexus Repository -->
      <ibiblio name="nexus" root="http://localhost:8081/nexus/repositories/public" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>
于 2010-09-06T20:32:14.140 に答える
0

これは、現在の (Groovy 1.8.1) 実装では可能ではないようです。改善チケットを作成しました: http://jira.codehaus.org/browse/GROOVY-4943

于 2011-07-25T02:33:47.260 に答える