首页 文章

在Gradle中,如何忽略本地常 Spring 藤存储库的缓存?

提问于
浏览
1

在我的Gradle脚本(版本0.8)中,我有一个本地ivy存储库,我用它来发布一个库,我似乎无法让Gradle忽略它的缓存 .

我正在访问当地的常 Spring 藤回购 . 根据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 /,而不是我本地ivy存储库的位置 . Gradle手册只有几行提到默认本地存储库不应该使用缓存,但我现在发现实际上表明我的存储库是'默认'和本地的方式,因此不应该使用缓存 .

我已经尝试设置ivy_repo.local = true,或者使用compile('myorg:mylib:0.1.0'),但似乎都不起作用 .

我不想使用flatDir存储库,因为本地库具有我希望我的项目可以找到的依赖项(我现在使用与本地库关联的常 Spring 藤文件来执行此操作,并且看起来flatDir存储库忽略这些文件...或者我在那里做错了什么?)

有人知道解决方案吗?或者也许是使用Gradle完成任务的更好方法?

1 回答

  • 0

    任何常 Spring 藤解析器都有 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中使这更方便 .

相关问题