如何使用ANT仅编译已更改的源文件
我正在尝试编写用于编译源文件夹的ant build,这是我编译的脚本目标 。
在我的项目中,我有大约1000个.java
文件。 当更改单个.java
文件时,目标往往会编译所有.java
文件。 这使得开发非常缓慢。 我只想知道有没有任何方法或代码来改变任务的行为,只编译修改或更改.java
文件而不是所有.java
文件。
请帮帮我。
据我了解,仅编译修改过的java文件是ant javac task的默认行为。 Ant使用.java文件的时间戳及其相应的.class文件来确定是否需要重新编译Java文件。 我在很多项目中都使用它,从来没有问题。
您可以查看以下几项内容
-
您的源树目录结构是否与Java包结构相匹配? 请参阅为什么ant总是重新编译我的所有Java文件? 。 这可能是常见问题解答中的第一个原因。
-
我看到你的
compile
目标取决于init
目标?init
目标做什么? 它取决于任何clean
目标还是清理.class文件? -
你的ant版本是什么? 你可以试试一个不同的ant版本,看看你是否还有同样的问题?
-
如果以上都不能解决您的问题,那么在编译之后,您是否可以手动检查.class文件时间戳并将其与相应.java文件的时间戳进行比较?
因此,如果您没有删除任何依赖任务中的classes目录,请说’clean’,javac任务本身只编译已更改的java文件。 它是javac任务提供的开箱即用function。 希望能帮助到你。