有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

删除目录时的Java Ant性能

大家好,各位飞越者

我在网上看到的大多数Ant构建文件都包含一个“干净”的目标,它总是使用deltree删除一个目录并重新创建该目录,所有二进制文件都将输出到该目录。这是性能问题吗?也就是说,仅当源文件已更改时才应编译该文件,但如果在每次生成后删除了包含所有二进制文件的目录,则必须在每次生成时重新编译所有文件。是这样吗?如果是这样的话,我说这真的会影响性能是不是错了

作为后续问题,在使用Ant时,这样做是绝对必要的还是强烈建议的?我的团队碰巧使用dropbox同步到多台机器,我们可能不希望在每次运行时都执行此步骤

谢谢你的意见

-阿兰地平线


共 (4) 个答案

  1. # 1 楼答案

    通常有必要进行清理,以减少由于重命名而导致的错误,并且可能会留下一些东西。然而,我不建议在Ant本身中这样做

    如果您使用的是git,请使用exec任务来执行该命令

    git clean -fdx .
    git reset --hard HEAD
    

    从项目文件的根目录。这将删除不属于源代码管理的任何文件,并将其重置为签出状态的顶部

    否则,我将在Windows上执行cmd /c rd /s,在UNIX上执行rm -rf,在构建文件夹上执行

  2. # 2 楼答案

    {a1}表示:只有没有对应的Java文件。类文件,或者类文件早于。java文件将被编译

    因此,没有必要每次都清理资源

  3. # 3 楼答案

    通常可以避免干净的步骤,javac只编译更改。对于快速开发,当您遇到问题时,您可能不会受到影响,只需保持干净即可。对于您将要部署的构建,最安全的做法是始终先进行清理,以处理任何复杂的依赖项,否则这些依赖项可能无法工作

    也就是说,你到底为什么要通过Dropbox与团队共享源代码?您应该使用SubversionGit(或大量其他)进行源代码管理。它们就是为此而设计的,当你处理任何可能复杂的事情,比如分支和合并时,你就会想要它们。如果您想避免设置很多,请考虑使用{A3}。

  4. # 4 楼答案

    如果要添加或更改现有类,则Clean通常是多余的javac检查class文件的时间戳以使其保持最新

    如果某些类已被删除,则这一点至关重要。如果您不先清理,您最终会得到过时的class文件,有时会导致依赖性问题

    不,与构建/部署过程中涉及的其他任务相比,执行清理不是一个值得一提的性能影响