【问题标题】:how can maven-bundle-plugin find packages in Import-Packagemaven-bundle-plugin 如何在 Import-Package 中找到包
【发布时间】:2012-09-08 21:11:06
【问题描述】:

<dependencies> 标签和<Import-Package> 标签中提到的捆绑包之间有什么关系吗?我的意思是如果我们不定义依赖,那么maven-bundle-plugin在<Import-Package>标签中找不到包?

【问题讨论】:

    标签: maven osgi maven-bundle-plugin


    【解决方案1】:

    Maven 使用依赖项部分中列出的 jars 来创建类路径。这个类路径被 bnd(maven bundle 插件中的引擎)用来通过字节码分析来分析你的代码所指的内容。

     maven dependency -> classpath -> bnd analysis -> import statements
    

    【讨论】:

      【解决方案2】:

      Import-Package 用于细化 maven bundle 插件自动为您生成的包导入列表。例如,您可以声明一些可选的导入,或者为只能通过反射访问的类添加导入。在大多数情况下,根本不需要为 Import-Package 指定任何内容,因为默认值为 * - 也就是说,将导入字节码中引用的任何外部包。

      dependencies 部分提供了编译器用来生成字节码的包池,以及用于改进包导入的 bnd(这是包插件的内容)。例如,它将根据依赖项列表(或传递依赖项)中提供包中的导出版本添加版本范围。

      【讨论】:

      • 但是在哪里可以自动找到字节码中引用的包?来自本地 Maven 存储库?
      • 一旦一个包在字节码中被引用,bundle 插件已经知道它的名字并且可以将它包含在 import package 语句中,所以它不需要被“找到”。但是,字节码中引用的几乎所有内容都将作为 maven 依赖项包含在内,否则它怎么可能被编译? “依赖项”部分中列出的依赖项是从本地或远程 maven 存储库中提取的。这允许捆绑插件计算出要导入的版本范围。
      猜你喜欢
      • 2015-05-19
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 2014-05-14
      • 1970-01-01
      • 2016-07-11
      相关资源
      最近更新 更多