我正在做一个Eclipse RCP项目。目前,我们创建了一个dependencies
插件项目,并将所有jar库放入该项目并导出所有包。这个方法会给出一个巨大的回购,因此我们想要使用Tycho / Maven并让它为我们找出依赖关系。
第一种方法是删除dependenciec
项目并使用p2-maven-pluging将现有的jar库转换为p2格式的repo。从p2 repos安装所有库,并在每个Require-Bundle
的{{1}}部分中添加所需的包。这有点单调乏味,因为在MANIFEST.MF
中dependencies
的每个项目中,我必须手动将其替换为相应的包名称。最后,使用Tycho的项目构建可以成功运行,但在Eclipse中它给了我Require-Bundle
。
我认为配置文件很少,其中Tycho取决于其中一些,Eclipse依赖于其余部分,但我不确定它是什么。
第二种方法是删除java.lan.NoClassDefFoundError: Could not initialize class X
项目中的所有广告,但在dependencies
或Require-Bundle
中添加这些广告。但是,由于在Import-Package
部分Eclipse都会抱怨这些包不存在,因此两者都无法工作。因此,其他项目取决于这个Export-Package
项目无法找到他们需要的软件包,这会导致Eclipse中出现更多错误。
有谁知道处理这个问题的最佳做法?
更新
我基本上使用第一种方法,但在每个项目中dependencies
而不是Import-Package
添加依赖项。这将消除指定特定包版本的需要,只要它们提供相同的API并且它们是兼容的,您的应用程序就可以工作。因此,每次更新私有p2存储库时,我都不需要在每个项目中更改Require-Bundle
。
我需要在MANIFEST.MF
中手动添加依赖项的唯一MANIFEST.MF
是我们自己开发的库。没有它,Tycho不会从私有p2存储库获取所需的依赖项。如果仍然获得Require-Bundle
,请尝试在“运行”中添加所有插件 - >运行配置.. - >插件,它可能有所帮助。
答案 0 :(得分:0)
我绝对不会将你的方法1与出口的大型插件一起应用。这里有一个相关的讨论:Handling non-OSGi dependencies when integrating Maven, Tycho and Eclipse
通常,使用Import-Package而不是Require-Bundle。
要获得捆绑包,将出现在Export:Package部分Eclipse中:
更一般地说,定义目标平台可能会有所帮助。您可以将所有本地创建的插件构建/部署到本地p2存储库中(请参阅http://www.sonatype.org/nexus/)。然后将该p2站点添加到目标平台。