В Gradle Как игнорировать кеш для локального хранилища плюща? - PullRequest
1 голос
/ 15 июля 2010

В моем скрипте 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') {change = true}, но ни один из них не работает

Я не хочу использовать репозиторий flatDir, потому что локальная библиотека имеет зависимости, которые я хочу, чтобы мой проект нашел (и я использую файл ivy, связанный с локальной библиотекой, чтобы сделать это сейчас, и этоПохоже, что репозиторий flatDir игнорирует файлы такого типа ... или, может, я что-то там не так делал?)

Кто-нибудь знает решение?Или, может быть, лучший способ выполнить мою задачу с Gradle?

1 Ответ

0 голосов
/ 15 июля 2010

У любого распознавателя плюща есть метод 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.

...