【问题标题】:How do I gradually migrate Netbeans wrappers of OSGi modules to direct dependencies on the OSGi modules for a Maven built, Netbeans 7.1 RCP?我如何逐步迁移 OSGi 模块的 Netbeans 包装器以直接依赖于 OSGi 模块以构建 Maven,Netbeans 7.1 RCP?
【发布时间】:2012-05-06 01:01:39
【问题描述】:

我们有一个 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?

非常感谢,

菲尔·威尔金森。

【问题讨论】:

    标签: maven netbeans osgi


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-09-06
        • 2014-04-15
        • 2017-03-11
        • 1970-01-01
        • 2012-05-05
        • 2014-11-18
        • 2015-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多