为什么MANIFEST.MF看不到Maven的pom包呢?

时间:2012-12-05 17:20:23

标签: eclipse maven eclipse-plugin osgi equinox

所以我的POM中有这样的东西:

<dependency>
  <!-- jsoup HTML parser library @ http://jsoup.org/ -->
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.7.1</version>
</dependency>   

从某个地方的maven repo中获取jsoup-1.7.1.jar并将其放在我的 Maven Dependencies 文件夹中。

现在我可以在我的代码中使用它(Eclipse不会抱怨),但是当我尝试在我的MANIFEST.MF文件中对它进行依赖时:

Import-Package: org.osgi.framework, org.jsoup, org.jsoup.nodes

Eclipse一直在抱怨:

No available bundle exports package 'org.jsoup.nodes'
No available bundle exports package 'org.jsoup'

有人可以向我解释为什么会这样吗? (我很好奇确定MANIFEST.MF看到的内容的过程

2 个答案:

答案 0 :(得分:2)

当您使用eclipse PDE时,您必须创建一个包含所有必需包的目标平台。正常的依赖性解析不与目标平台耦合。因此,您必须将每个依赖项添加到maven pom和目标平台。

顺便说一下。如果您正在开发基于服务器的OSGi项目,最好不要使用PDE。您还可以使用maven捆绑包插件创建捆绑包。它会分析您执行的导入并自动创建清单。在大多数情况下,这比PDE清单第一种方式要好得多,而且对maven来说效果更好。

请参阅:http://www.liquid-reality.de/display/liquid/2011/02/15/Karaf+Tutorial+Part+1+-+Installation+and+First+application

答案 1 :(得分:0)

只需在该软件包清单文件中添加一个导出语句,请记住每次导入都应该导出enter link description here