在我的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'){changing = true},但似乎都没有效果。
我不想使用flatDir存储库,因为本地库具有我希望我的项目可以找到的依赖项(我现在正在使用与本地库关联的常春藤文件来执行此操作,并且它似乎是flatDir存储库忽略了这些类型的文件......或者我在那里做错了什么?)
有人知道解决方案吗?或者也许是使用Gradle完成任务的更好方法?
答案 0 :(得分: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中使这更方便。