如何逐步迁移OSGi模块的Netbeans包装器,直接依赖于Maven构建的Netbeans 7.1 RCP的OSGi模块?

时间:2012-04-25 10:44:44

标签: maven netbeans osgi

我们有一个Maven构建的Netbeans 7.1 rcp应用程序,它通过将OSGi模块包装在Netbeans模块包装器中,成功地混合了OSGi模块(包装:bundle)和Netbeans模块(包装:nbm)。我们希望从使用这些包装器迁移到直接使用OSGi模块来简化构建。有大约30个包装器,osgi模块对,我想解决包装器的删除,一次一个模块对。

然而,当我们用依赖于它的模块pom中的osgi依赖替换特定的包装依赖项时,使用

    <useOSGiDependencies>true</useOSGiDependencies>

在nbm-maven-plugin配置中。对其他包装器的任何其他依赖项突然无法使用在运行时错误时不可用的传递依赖项构建。

Project使用来自传递模块[xxx]的类,这些类在运行时无法访问。

- 其中[xxx]是OSGi模块的名称。

当然,我可以通过用它们包装的OSGi模块替换包装器依赖项来修复构建,但这会大大增加迁移任务的大小。 一旦我通过“修复”这些瞬态依赖关系进行构建,我选择迁移的OSGi模块就会成功地出现在新的集群“extra”中。 但是在运行时,rcp无法找到其他的osgi模块,因为我猜,在构建的其他地方,它们仍然是通过包装器引用的。

这些包装器和直接OSGi依赖项是否可以共存?或者我是否必须一次性将所有Netbeans包装器迁移到OSGi?

非常感谢,

菲尔威尔金森。

2 个答案:

答案 0 :(得分:1)

看起来一次没有办法做这个包装器,它与devDependencies完全没有任何关系。 :(

答案 1 :(得分:0)

可以一次将它们更改为useOSGiDependencies=true一个模块。

详细的分步指南可能对答案来说太长了,所以这里有一些通用的规则:

  1. 使用nbm-maven-plugin版本&gt; = 3.11。较低版本有一些错误。
  2. NBM包装器的OpenIDE-Module&amp; OpenIDE-Module-Specification-Version必须与包装好的Bundle-SymbolicName&amp;分别为Bundle-Version
  3. 如果捆绑包具有包版本控制,则必须将其作为MANIFEST.MF复制到NBM包装器的Netigso-Export-Package