删除目录时的Java Ant性能
大家好,各位飞越者
我在网上看到的大多数Ant构建文件都包含一个“干净”的目标,它总是使用deltree删除一个目录并重新创建该目录,所有二进制文件都将输出到该目录。这是性能问题吗?也就是说,仅当源文件已更改时才应编译该文件,但如果在每次生成后删除了包含所有二进制文件的目录,则必须在每次生成时重新编译所有文件。是这样吗?如果是这样的话,我说这真的会影响性能是不是错了
作为后续问题,在使用Ant时,这样做是绝对必要的还是强烈建议的?我的团队碰巧使用dropbox同步到多台机器,我们可能不希望在每次运行时都执行此步骤
谢谢你的意见
-阿兰地平线
# 1 楼答案
通常有必要进行清理,以减少由于重命名而导致的错误,并且可能会留下一些东西。然而,我不建议在Ant本身中这样做
如果您使用的是git,请使用
exec
任务来执行该命令从项目文件的根目录。这将删除不属于源代码管理的任何文件,并将其重置为签出状态的顶部
否则,我将在Windows上执行
cmd /c rd /s
,在UNIX上执行rm -rf
,在构建文件夹上执行# 2 楼答案
{a1}表示:只有没有对应的Java文件。类文件,或者类文件早于。java文件将被编译
因此,没有必要每次都清理资源
# 3 楼答案
通常可以避免干净的步骤,javac只编译更改。对于快速开发,当您遇到问题时,您可能不会受到影响,只需保持干净即可。对于您将要部署的构建,最安全的做法是始终先进行清理,以处理任何复杂的依赖项,否则这些依赖项可能无法工作
也就是说,你到底为什么要通过Dropbox与团队共享源代码?您应该使用Subversion或Git(或大量其他)进行源代码管理。它们就是为此而设计的,当你处理任何可能复杂的事情,比如分支和合并时,你就会想要它们。如果您想避免设置很多,请考虑使用{A3}。
# 4 楼答案
如果要添加或更改现有类,则Clean通常是多余的
javac
检查class
文件的时间戳以使其保持最新如果某些类已被删除,则这一点至关重要。如果您不先清理,您最终会得到过时的
class
文件,有时会导致依赖性问题不,与构建/部署过程中涉及的其他任务相比,执行清理不是一个值得一提的性能影响