Eclipse自定义构建器:识别和清理生成的文件

时间:2014-12-17 14:00:38

标签: java build eclipse-rcp eclipse-plugin

我正在为Eclipse创建一个插件,其中包含用于创建自定义类型项目的工具。这些项目具有自定义性质和构建器。我的构建器(实现IncrementalProjectBuilder)接受单个输入文件,并生成一些(通常在3到5之间)输出文件。当我运行Clean Project时,我需要删除构建器之前生成的文件。

问题1:生成的文件的名称并不完全清楚,但我确实知道我希望找到的文件类型(例如我知道扩展名和部分文件名)。

问题2:用户可以将自己的文件添加到项目中,这不应受我的构建/清理步骤的影响。

我最初的尝试是天真的:删除输入文件以外的所有文件。这有效,但有明显的问题。

我的第二次尝试更好:我想出了一个可能生成的文件名列表,看看是否存在任何文件名并删除它们。

  • 只知道部分文件名并匹配它们,我可能会无意中删除用户的文件。例如。我知道我将生成一个名为* _file.py的文件。如果我生成的文件名为abc_file.py,并且用户已添加了自己的xyz_file.py,我想清除(删除)abc_file.py,但保持xyz_file.py不变。

  • 从输入生成输出文件的程序不断变化,我不想依赖需要不断维护的具体文件列表。

所以,我的问题归结为此。有哪些方法可以识别我的自定义构建器生成的文件,因此我可以在清理过程中删除它们?

我花了几天时间用谷歌搜索这个没什么可展示的。我隐约知道Java中的文件系统监视器(Java7 WatchService?),但我不知道这是否是解决此问题的最佳解决方案。

赞赏任何信息,建议或想法。

1 个答案:

答案 0 :(得分:1)

一种强力方法是在调用其他程序之前和之后比较项目,以获取创建/生成的文件列表。当然,如果该程序可以某种方式告诉您它创建了哪些文件,那将是理想的。获得该列表后,您可以将这些文件迭代为IFile,因为使用setDerived()方法将它们标记为不是源文件。当需要清理目录时,您可以使用派生设置来决定可以删除哪些文件。