ibiblio リポジトリで依存関係を @Grab するためにグレープシステムを使用するスクリプトを実行するとgrape resolve
、コマンド ラインから手動で呼び出すまで失敗します。その後、それはローカル キャッシュにあり、スクリプトは正常に実行されます。
スクリプトから初めて機能させるために使用する必要がある他の注釈はありますか? ユーザーに最初に「グレープ リゾルブ」を指示してから @Grab が機能するように指示するのは、ぎこちなく感じられます。
これは、redis 用の jedis jar を取得するスクリプトです。
#!/usr/bin/env groovy
@Grab('redis.clients:jedis:2.0.0')
import redis.clients.jedis.*
Jedis redis = new Jedis("localhost")
クリーンな ~/.groovy/grapes キャッシュがある場合、次の例外で失敗します。
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during conversion: Error grabbing Grapes -- [unresolved dependency: redis.clients#jedis;2.0.0: ibiblio: unable to get resource for redis/clients#jedis;2.0.0: res=/redis/clients/jedis/2.0.0/jedis-2.0.0.pom: java.net.MalformedURLException: no protocol: /redis/clients/jedis/2.0.0/jedis-2.0.0.pom]
grape resolve
コマンドラインから手動で実行した場合にのみ実行されます。
grape -V resolve redis.clients jedis 2.0.0
(出力の一部は、ibiblio からダウンロードしていることを示しています):
...
ibiblio: found md file for redis.clients#jedis;2.0.0
=> http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom (2.0.0)
downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom ...
ibiblio: downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom
ibiblio: downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom.sha1
sha1 OK for http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom
[SUCCESSFUL ] redis.clients#jedis;2.0.0!jedis.pom(pom.original) (1184ms)
...
ローカル キャッシュに格納された後、スクリプトは @Grab で正常に動作します。
~/.groovy/grapeConfig.xml ファイルを手動で追加していないため、groovy に付属するデフォルトのファイルを使用しています。私はgroovy 1.8を使用しています:
groovy -v
Groovy Version: 1.8.0 JVM: 1.6.0_24
これをグラブの上に手動で追加しようとしました:
@GrabResolver(name='ibiblio', m2Compatible='true', root='http://repo1.maven.org/maven2/')
しかし、それは役に立ちませんでした。何か不足していますか?