我正在使用 Eclipse 中的 bndtools 处理 OSGi 包。我刚刚向存储库添加了一个新包(apache commons logging)cnf/localrepo
,我们的 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 不需要管理索引?