3

以下是我的 ant 脚本的简化版本(它有项目元素等)。

我是 ant 新手,无法弄清楚为什么 'compileTests' 不能编译,而 'compileFoo' 可以。

我得到的错误是“包不存在”,因为 compileTests 项目中的类在 compileFoo 项目中找不到已编译的类,即使它们编译得很好,我也可以在文件系统和路径上看到它们它们列在类路径中(我认为这是必要的?)

显然有一些我不明白的基本内容。有人可以帮忙解释一下吗?

<path id="build_classpath">
    <fileset dir="${other_required_jars}" includes="**/*.jar" />
    <fileset dir="${foo_build_location}" includes="**/*.class" />
</path>


<target name="compileFoo" description="compile">
    <javac srcdir="${foo_source_directory}\test-src" includeantruntime="false" destdir="${foo_build_location}" includes="**/*.java" excludes="" debug="on" optimize="off" deprecation="on" verbose="on">
        <classpath refid="build_classpath" />
    </javac>
</target>


<target name="compileTests" description="compile">
    <javac srcdir="${test_source_directory}\test-src" includeantruntime="false" destdir="${test_build_location}" includes="**/*.java" excludes="" debug="on" optimize="off" deprecation="on" verbose="on">
        <classpath refid="build_classpath" />
    </javac>
</target>
4

1 回答 1

3

你的类路径是错误的。类路径不包含一组 .class 文件。它包含一组 jar 或目录,每个目录都包含包树的根。所以类路径应该只包含一个元素${foo_build_location}::

<path id="build_classpath">
    <fileset dir="${other_required_jars}" includes="**/*.jar" />
    <pathelement location="${foo_build_location}"/>
</path>
于 2013-04-30T12:14:20.590 回答