我正在尝试使用以下 ant 任务从干净的目录(无增量编译)中编译来自不同包的 100 多个 java 类:
<target name="-main-src-depend">
<depend srcdir="${src.dir}"
destdir="${bin.dir}"
cache="${cache.dir}"
closure="true"/>
</target>
<target name="compile" depends="-main-src-depend"
description="Compiles the project.">
<echo>Compiling</echo>
<javac target="${javac.target}"
source="${javac.source}"
debug="${javac.debug}"
srcdir="${src.dir}"
destdir="${bin.dir}">
<classpath>
<path refid="runtime.classpath"/>
<path refid="compile.classpath"/>
</classpath>
</javac>
</target>
但是,第一次运行编译任务时,我总是得到一个 StackOverflowException。如果我再次运行该任务,编译器会进行增量构建并且一切正常。这是不可取的,因为我们使用CruiseControl进行自动每日构建,这会导致错误的构建失败。
作为一个快速和肮脏的解决方案,我创建了 2 个单独的任务,在每个任务中编译项目的一部分。我真的不认为这个解决方案会在将来添加更多类时成立,而且我不希望每次达到“编译限制”时都添加新的编译任务。