2

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

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

当我尝试构建“B”时,出现以下构建错误:

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

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

那么问题来了:如何在构建的插件中配置 Tycho不移除Export-Package(或者配置应该导出哪些包)?

4

1 回答 1

4

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

编辑

Eclipse Bugzilla 上报告了该错误:当位于提供的 MANIFEST.MF 中的“Import-Package”之后,“Export-Package”会从目标 MANIFEST.MF 中删除

编辑2

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

于 2012-04-19T14:42:21.037 回答