Tycho:'Export-Package'从MANIFEST.MF中删除

时间:2012-04-19 12:51:42

标签: maven tycho

我们正在将构建系统从Ant迁移到Maven,而我目前正致力于构建Eclipse插件。在做了一些研究之后,我决定使用Tycho Maven插件来进行构建。这并不简单,但我解决了除此之外的大部分问题。

尝试构建依赖插件时出错。考虑我有一些插件A和一个依赖于A的插件B(使用A中的类)。这两个插件都是首先显示的(并且有<packaging>eclipse-plugin</packaging>)。

当我尝试构建&#39; B&#39;时,我遇到了以下构建错误:

[ERROR] Access restriction: The type Constants is not accessible due to restriction on class pathentry C:/maven/repository/...

我检查了一切次数,但后来我意识到我应该看看我的存储库中 A.jar MANIFEST.MF , - 就是这样。出于某种原因,Export-Package已从插件 A 的MANIFEST-MF中删除。我手动将缺少的导出添加到本地Maven存储库中的MANIFEST.MF(只是为了确保它是真正的问题!),插件 B 的构建成功!

所以问题是:如何在构建的插件中配置Tycho 不删除 Export-Package(或配置应导出哪些包)?

1 个答案:

答案 0 :(得分:4)

原来Tycho依赖于MANIFEST.MF属性的顺序。在我的例子中,Export-Package放在Import-Package之后,在这种情况下,Tycho在构建插件并重新生成MANIFEST.MF时丢弃了整个Export-Package属性。 只要Export-PackageImport-Package之前放置,一切正常,并按预期生成目标MANIFEST.MF。 Tycho版尝试: 0.14.0 0.14.1

修改

在Eclipse Bugzilla上报告了该错误:'Export-Package' gets removed from target MANIFEST.MF when located after 'Import-Package' in provided MANIFEST.MF

<强> EDIT2

查看提交的错误的详细信息。真正的原因是缺少换行符 - 这正式是一个明显的错误。 Tycho在解析期间忽略了最后一行,因此作为最后一行的Export-Package未包含在目标清单中。