1

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

但是,当我们在依赖它的模块 pom 中将特定的包装器依赖替换为其 osgi 依赖时,并使用

    <useOSGiDependencies>true</useOSGiDependencies>

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

项目使用传递模块 [xxx] 中的类,这些类在运行时无法访问。

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

当然,我可以通过将包装器依赖项替换为它们包装的 OSGi 模块来修复构建,但这会大大增加迁移任务的规模。一旦我通过“修复”这些临时依赖项获得了构建,我选择迁移的 OSGi 模块成功地出现在一个新的“额外”集群中。但是在运行时,rcp 找不到其他 osgi 模块,因为我猜,在构建的其他地方,它们仍然被包装器引用。

这些包装器和直接的 OSGi 依赖项有什么办法可以共存?还是我必须一次性将所有 Netbeans 包装器迁移到 OSGi?

非常感谢,

菲尔·威尔金森。

4

2 回答 2

1

看起来没有办法一次做一个包装器,它与 useOSGiDependencies 是全有或全无。:(

于 2012-05-11T17:14:23.993 回答
0

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

详细的分步指南可能会太长,无法找到答案,因此这里有一些通用规则:

  1. 使用nbm-maven-plugin版本 >= 3.11。低版本有一些错误。
  2. NBM 包装器的OpenIDE-Module&OpenIDE-Module-Specification-Version必须分别与包装的捆绑包的Bundle-SymbolicName&匹配Bundle-Version
  3. 如果捆绑包具有包版本控制,则必须将其复制到 NBM 包装器MANIFEST.MFNetigso-Export-Package.
于 2015-04-25T14:34:59.543 回答