1

私の Gradle スクリプト (バージョン 0.8) には、ライブラリを公開するために使用するローカルの ivy リポジトリがあり、Gradle にそのキャッシュを無視させることができないようです。

ローカルのアイビー リポジトリにアクセスしています。Gradle マニュアルの推奨事項に基づいています。関連するコードは次のとおりです (一部の変数の名前が変更されています)。

dependencies{
  // [several remote dependencies]
  // ... 

  compile('myorg:mylib:0.1.0')
}

def ivy_repo = new org.apache.ivy.plugins.resolver.FileSystemResolver()
ivy_repo.name = 'ivy-repo'
ivy_repo.addIvyPattern local_repository + '/ivy/[organisation]/'+
   '[module]-ivy-[revision].xml'
ivy_repo.addArtifactPattern local_repository + '/ivy/[organisation]/'+
   '[module]-[revision](-[classifier]).[ext]'
ivy_repo.descriptor = 'optional'
ivy_repo.checkmodified = true

repositories{
  // [several remote repositories]
  // ...

  add(ivy_repo)
}

私の問題は、スクリプトを実行すると、ローカル ライブラリが解決されると、その後のビルド スクリプトの呼び出しで、ローカルのアイビー リポジトリの場所ではなく、~/.gradle/cache/myorg:mylib/ が使用されることです。Gradle のマニュアルには、デフォルトのローカル リポジトリがキャッシュを使用してはならないという記述が数行しかありませんが、リポジトリが「デフォルト」でローカルであるため、キャッシュを使用すべきではないことを実際に示す方法を見つけました。

ivy_repo.local = true を設定するか、compile('myorg:mylib:0.1.0'){changeing = true} を使用しようとしましたが、どちらも機能していないようです。

ローカル ライブラリには、プロジェクトに見つけてもらいたい依存関係があるため、flatDir リポジトリを使用したくありません (現在、ローカル ライブラリに関連付けられている ivy ファイルを使用してそれを実行していますが、flatDir リポジトリは無視しているようです)。これらの種類のファイル...または、何か間違ったことをしていたのでしょうか?)

誰でも解決策を知っていますか?または、Gradle で私のタスクを達成するためのより良い方法でしょうか?

4

1 に答える 1

0

ツタのリゾルバーにはResolver.setRepositoryCacheManager()メソッドがあります。引数としてRepositoryCacheManagerを取ります。DefaultRepositoryCacheManagerの特別に構成された独自のインスタンスを作成し、それをメソッドに渡すことができます。useOriginを使用すると、アーティファクトにキャッシュを使用しないように指定できます。

DefaultRepositoryCacheManager cacheManager = new DefaultRepositoryCacheManager(); cacheManager.setName(name); cacheManager.setUseOrigin(true); cacheManager.setLockStrategy(new NoLockStrategy()); cacheManager.setIvyPattern(ResolverContainer.DEFAULT_CACHE_IVY_PATTERN);

これを1.0でもっと便利にしたいと思います。

于 2010-07-15T07:01:46.480 に答える