Eclipse与ant的build.xml所做的文件系统更改不同步

时间:2010-12-03 10:18:31

标签: java eclipse ant

我们有一个非常大的项目。我们使用ant来设置环境。在ant脚本中发生的事情之一是将jar复制到项目的lib文件夹中。然后,我们使用ant任务:eclipse.refreshLocal和eclipse.incrementalBuild,这样现在复制的jar将解决引用它的项目中的编译问题。

不幸的是,项目似乎与文件系统不同步。项目>属性>构建路径显示jar存在(可能是在查看属性时刷新的信息)但incrementalBuild没有按照我们的预期执行。

此外,有时一个依赖于这个jar的项目,我们刷新并构建它(通过ant)只有一个编译错误:“在解决构建路径错误之前,项目无法解决”。在其他时候,有许多编译错误表明项目没有注意到新的jar。

当我通过eclipse构建它时,它没问题。

我担心项目之间可能存在循环依赖关系,但似乎没有这样的依赖关系(构建属性:循环依赖关系选项设置为“错误”,并且项目中没有此形式的错误)。

有人对这个问题很熟悉吗? 处理这个问题的正确方法是什么?

感谢您的帮助。

4 个答案:

答案 0 :(得分:10)

如果右键单击build.xml并选择运行方式→Ant Build ... ,您将看到一个名为刷新的标签。只需选中完成后刷新资源选项。

(我在ANT xslt目标中生成代码时自己使用它,它就像魅力一样。)

enter image description here

您可能还想检查窗口→偏好设置→工作区

下的自动刷新

答案 1 :(得分:0)

尝试清理整个工作区并刷新:)

答案 2 :(得分:0)

可能对您有用的一个解决方案是修改Ant构建(Run -> External Tools -> External Tools Config)的Eclipse启动配置,并在Ant构建完成时显式配置它以刷新工作区(或部分工作区)。这消除了从Ant脚本本身执行刷新的需要,并且它总是在脚本完成时触发正确的构建反应。

答案 3 :(得分:0)

如果从外部更改其工作区中的文件,Eclipse通常不会非常喜欢它。 Eclipse Preferences中有一个选项可以自动与文件系统同步,但对于IO来说,这可能非常紧张。

它可能仍然无法解决你所有的问题,尤其是当你改变库罐时。

即使考虑到斯卡弗曼关于构建完成时刷新的建议,我也不确定这会改善你的情况,但试一试。

根据我的经验,实际上我还没有在大型设置中看到真正工作的解决方案,让生活更轻松,而不仅仅是创建一组不同的问题。