使用Apache Ant清理过时的.class文件

时间:2010-11-04 18:17:35

标签: java ant

如何从.class中的${workdir}个现有.java文件中清除${srcdir}个陈旧.class文件?过时我指的是从现在删除的.java文件生成的.class个文件。我尝试使用Ant映射器和文件集等来提出一些东西,但我失败了。删除早于其各自源.java文件的所有{{1}}个文件也是可以接受的。

3 个答案:

答案 0 :(得分:2)

问题在于确定没有明显对应的源文件的类文件是否真的过时。

在单个文件(A.java)中尝试此操作

public class A{}
class B{}

这将导致A.class和B.class。因此,由于缺少java文件,B.class似乎过时了。你可能会遇到与任何内部类相似的问题。

最安全的赌注,如果你想确保周围没有旧的类文件只是删除它们。

答案 1 :(得分:1)

我很确定有一个蚂蚁任务可以杀死比.java更早的类......

Depend听起来很接近,实际上可能会做你想要的,但这不是它的预期目的。然而,鉴于发展自然的答案,这可能是实际工作的唯一因素。

答案 2 :(得分:1)

由于无法检测到什么是陈旧的,什么不是,所以大多数构建都有 clean 目标(这也是 cleanbuild 的一部分)。 clean 目标,只是从 build 目录中删除所有文件。该目录通常是无版本的(svn:ignore)。

并非您构建的所有文件都是编译器的结果,例如.property文件,这些文件可以存储在另一个目录中,该目录将复制到 build 目录中。例如,在Web应用程序构建中,您可以将这些文件存储在/ web / WEB-INF / classes中,并让Ant将它们复制到构建目录中。