如何从.class
中的${workdir}
个现有.java
文件中清除${srcdir}
个陈旧.class
文件?过时我指的是从现在删除的.java
文件生成的.class
个文件。我尝试使用Ant映射器和文件集等来提出一些东西,但我失败了。删除早于其各自源.java
文件的所有{{1}}个文件也是可以接受的。
答案 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将它们复制到构建目录中。