如何使用ANT编译不仅改变了源文件(how to compile only changed sour

2019-08-17 05:06发布

我想写Ant构建这里编译源文件夹是我的编译脚本的目标

 <target name="compile" depends="init">
        <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true">
            <classpath refid="master-classpath"/>
        </javac>

    </target>

在项目中,我有近1000 .java文件。 当以往单一.java文件高于目标改变趋于编译所有.java文件。 这使得发展非常缓慢。 我只是想知道有没有什么办法或代码来改变任务的行为编译只进行修饰或改变.java文件,而不是所有.java文件。

请帮我。

Answer 1:

据我了解,只编译修改的java文件是蚂蚁javac任务的默认行为。 蚂蚁使用一个.java文件的时间戳和相应的.class文件,以确定是否一个Java文件需要重新编译。 我已经在很多项目中使用它,不会有问题。

这里有一些事情你可以检查

  1. 是您的源代码树的目录结构匹配您的Java包结构? 请参阅为什么蚂蚁总是重新编译我的所有Java文件? 。 这可能是1号的原因,因为它是常见问题。

  2. 我看到你的compile目标依赖于init目标? 什么是init目标呢? 它依赖于任何clean目标或做它清理.class文件?

  3. 什么是你的蚂蚁版本? 你可以尝试不同的蚂蚁版本,看看如果你仍然有同样的问题?

  4. 如果上述修复您的问题,编译后,您可以手动检查.class文件的时间戳,并将其与相应的.java文件的时间戳比较?



Answer 2:

所以,如果你没有在任何相关任务删除classes目录只说“干净”的javac任务本身编译更改的java文件。 这是一个开箱即用的功能,javac任务提供的。 希望能帮助到你。



文章来源: how to compile only changed source files using ANT