我可以避免复制所有OSDI容器吗?

时间:2013-11-18 13:46:47

标签: equinox osdi

我正在一个磁盘空间非常有限的平台上运行,我正在查看OpenDaylight的磁盘使用情况。

最大的目录是pluginsconfiguration/org.eclipse.osgi/bundles目录。 plugins目录是我所有捆绑包的所在,所以我很好。但是configuration/org.eclipse.osgi/bundles目录似乎主要包含我的捆绑包的副本。

例如configuration/org.eclipse.osgi/bundles/117/1/bundlefileplugins/org.opendaylight.controller.clustering.services-implementation-0.4.0.jar的精确副本。这是磁盘空间的一大浪费。

我试图找到一个配置选项来禁用它,但什么也没找到。有东西吗?

我也查看过Equinox源代码,但没有找到任何内容。有人能指出我在代码中的位置吗?我想禁用它,或者至少用硬链接替换它。

1 个答案:

答案 0 :(得分:0)

在向Equinox邮件列表上询问好人之后,我得出了这些结论:

  1. 使用Equinox和其他一些OSDI实现,您可以在包URL前添加“reference:”以避免无用的副本(仍然必须复制包中嵌入的本机库)。
  2. OpenDaylight正在使用org.apache.felix.fileinstall以避免必须指定要加载的所有包。它只加载目录中找到的所有包。 FileInstall不允许在URL前面添加“reference:”。
  3. 我的解决方案是从加载的包中删除FileInstall,并手动将所有包添加到列表中,并将“reference:”字符串添加到“file:”URL。