我可以更新一个Eclipse插件项目,它只是一个jar的包装器吗?

时间:2010-10-16 10:20:11

标签: eclipse plugins jar

问候, 我有一个java项目,我导出为jar。这个java项目也使用JNI。 到目前为止,我可以找到在Eclipse插件中使用此jar的唯一方法是将其包装在另一个eclipse插件项目中,并将此jar包装器插件添加到我的实际插件的依赖项中。 我已经和Eclipse的路径和依赖设置搏斗了好几天,而且这种方法是目前唯一对我有用的方法。 但是,它不太实用,因为当我更改基于JNI的java代码时,我可以简单地创建一个新jar,但是为了将jar连接到我的实际插件,我每次都必须重新创建jar包装器插件。 也就是说,我删除了jar包装器插件项目,包含磁盘上的所有内容,并使用相同的名称重新创建它,指向更新的jar。我还必须从实际的插件项目中删除对该项目的引用并再次添加(最近可能会变得更聪明,但我没有测试它)

这很耗时,我也无法将此包装器插件项目添加到svn,因为它每次都是从头开始创建的。

如果我可以通过指向jar的新版本来简单地更新包装eclipse插件项目的jar,这将解决我的问题,并且我可以在每次更新后将项目提交到svn。

您能想到哪种方法可以帮助我顺利完成这个过程?

最诚挚的问候 谢雷夫

1 个答案:

答案 0 :(得分:1)

在OSGi包中使用外部库而不用物理包装它们的Equinox(即非标准OSGi)方法是通过引用捆绑:你仍然需要一个包装器插件,但它不包含包装库本身但是使用如下语法在bundle manifest Bundle-Classpath标头中引用:

Bundle-Classpath: external:/path/to/your/lib.jar

在开发期间,这非常方便,并且无需在更新包装库时重新创建包装器插件。在部署期间,您必须与产品一起安装库或使用传统的包装器插件(包含实际库的插件)。您还可以对bith用例使用相同的包装器插件,但根据您是否要使用包装或外部库,将Bundle-Classpathexternal:/stuff/lib.jar更改为libs/lib.jar

(大部分内容来自 OSGi和Equinox - 创建高度模块化的Java系统这本书,我不太喜欢,但它包含有关Equinox(Eclipse的OSGi实现)和PDE构建系统。)