【发布时间】:2016-02-10 02:05:45
【问题描述】:
我正在使用 Eclipse 中的 bndtools 开发 OSGi 包。我刚刚向cnf/localrepo 存储库添加了一个新包(apache commons logging),而我们的 CI 服务器现在无法构建:
[Gradle] - Launching build.
[workspace] $ gradle build
:mybundle : Cannot find /error/com.springsource.org.apache.commons.logging;version=0 Not found in [bnd-cache, Release, Local, Bndtools Hub, /var/lib/jenkins/jobs/myapp/workspace/cnf/nonosgi-repo r/w=true]
Error : com.springsource.org.apache.commons.logging;version=0 Not found in [bnd-cache, Release, Local, Bndtools Hub, /var/lib/jenkins/jobs/myapp/workspace/cnf/nonosgi-repo r/w=true]
为简单起见,对项目名称进行了轻微混淆。
在我看来,gradle 插件没有刷新存储库索引 - 如果我的一个队友从我们的 vcs 更新而没有在 Eclipse 中刷新,那么他们会得到同样的错误。
我知道 bndtools 有 org.osgi.impl.bundle.repoindex.cli 插件,但我对 bndtools 或 gradle 的了解还不够,无法将其应用到我的项目中。我也觉得要么 (a) gradle 插件应该自行刷新存储库,要么 (b) 我错误地使用了存储库。
是否可以在 build.gradle 中添加一个在构建之前刷新索引的任务?
我们是否应该将所有依赖项移至在线存储库,以便 bnd 不需要管理索引?
【问题讨论】: