我正在尝试使用 Eclipse PDE 工具将一组插件(最终是 OSGi 包)编译成一个功能。我有一个基于 Spring 框架的自定义目标平台。
当我通过 Eclipse 的导出向导导出功能时,功能构建成功,但是,当我尝试从 feature.xml 文件生成 Ant 构建脚本时,我收到关于“循环”的错误。在做了一些研究之后,我发现导出向导中有一个“允许目标平台中的二进制循环”复选框——取消选中它会产生与我在尝试使用 PDE 工具生成 Ant 构建文件时看到的相同的结果。
我尝试从导出向导保存 Ant 构建文件,但是当我执行 Ant 构建文件时,我收到相同的错误,表明存在循环(并且它引用了目标平台捆绑包)。
此外,我尝试在 build.properties 文件中设置“allowBinaryCycles = true”,也尝试将其设置为 Ant Build 脚本中的一个属性——两者均不影响结果。
如何从导出向导运行生成的 Ant 构建文件,以便在目标平台中允许二进制循环?
编辑:需要明确的是,这里的错误存在于目标平台中(即:Spring 框架!)。事实证明,Spring Framework 中的 Context 和 ORM 包之间存在一个循环。这有点烦人,并且存在两种体面的解决方法:
- 如果不需要,请排除 ORM 包(事实证明这是我最好的解决方案)
- 从 ORM 包中移除对 Context 包的动态依赖。
Spring 论坛上的一些讨论有助于解决这个问题。
当然,这些解决方案是 Spring 特有的。似乎还有第二个问题——这次是 Eclipse 作为构建器——允许这些二进制循环的选项(无论它们可能多么错误和糟糕)只存在于构建器的 GUI 版本中。人们希望最终这个选项能够进入 Ant 构建任务。