当依赖项发生变化时,如何让javac重新编译源代码文件?

cmc*_*nty 4 ant dependencies javac

当使用javac进行增量构建时,我似乎在项目中遇到运行时错误.是否支持此类工作流程?例如,if A.java依赖于B.java,并被B.java修改; 将javac重新编译,A.java因为它的依赖性改变了吗?

现在我正在使用javac ant build-task进行编译:

    <javac destdir="${classes.dir}"
            srcdir="${src.dir}"
            source="${javac.version}"
            debug="${javac.debug}"
            deprecation="${javac.deprecation}"
            includeantruntime="build.sysclasspath=last">
        <classpath refid="compile.classpath" />
        <classpath refid="junit.classpath" />
    </javac>
Run Code Online (Sandbox Code Playgroud)

van*_*nza 8

由于您使用的是ant,请查看depend任务.


Paŭ*_*ann 5

javac命令行编译;在命令行上给出的每一个源文件,另外还对所有这些依赖,如果他们没有新的类文件.

蚂蚁javac任务试图变得更聪明一点,以避免始终编译所有东西 - 它只重新编译那些已经改变的文件(即比它们各自的类文件更新).这并没有注意可能某些类的依赖性发生了变化的情况,因此其他类也需要重新编译.

在我当前的项目中,我只是ant clean在测试时遇到问题(当然还有任何生产部署之前),这会删​​除所有类文件.但正如vanza所说,有depend一项任务的任务是找到并删除所有依赖于你改变的类的类 - 在你的javac任务之前运行它并且你应该是好的.