我很高兴使用Maven bundle-plugin为我的模块创建OSGi清单头。但是,当有配置文件引入代码中未直接引用的类时,插件无法分辨它将需要哪些软件包。
一个示例是具有构成JPA持久性单元的域模型的捆绑包。驱动程序类是PU配置的一部分,可以在XML文件中设置,也可以在实例化EntityManager
时在运行时设置。我必须手动为我要加载的驱动程序类添加Import-Package
标头,否则我会收到CNF错误。
另一个例子是Struts战争,其中web.xml
拉入了Struts调度程序,否则代码中的任何地方都找不到它,并且必须手动添加到标题中。
我该如何避免这种情况?
我尝试使用provided
范围添加所需的包作为依赖项,但这没有帮助。
答案 0 :(得分:1)
在bnd配置的插件部分中,您可以指定插件来分析这些文件并为import-package标头做出贡献。对于春天,它看起来像这样:
<_plugin>aQute.lib.spring.SpringComponent</_plugin>
我不确定,春天支持哪些描述符。只需看看源代码(它位于Apache Felix SVN中)并亲眼看看。在最坏的情况下,你必须编写自己的插件,但至少它是可能的!关于bnd的彼得克里恩斯网站也解释了用法和一些内部结构。
除此之外,我不知道任何简单的解决方案。