我们正在将构建系统从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(或配置应导出哪些包)?
答案 0 :(得分:4)
原来Tycho依赖于MANIFEST.MF属性的顺序。在我的例子中,Export-Package
放在Import-Package
之后,在这种情况下,Tycho在构建插件并重新生成MANIFEST.MF时丢弃了整个Export-Package属性。
只要Export-Package
在 Import-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未包含在目标清单中。