【发布时间】:2019-11-08 05:14:44
【问题描述】:
手头的任务是使用 Ant 脚本分别编译 Java 类及其关联的 JUnit 'Test' 类。 常规类存储在“src”中,而测试类存储在“test/src”中。常规类应编译为“bin”,测试类应编译为“test/bin”。两者都在同一个包中。
我的 Ant 脚本如下所示:
<javac
includeantruntime="false"
classpathref="master-classpath"
destdir="${test.class.build.dir}"
>
<src path="${src.dir}"/>
<src path="${test.class.dir}"/>
<include name="**/*Test*.java"/>
</javac>
运行脚本显示我只会编译一个文件:
[javac] Compiling 1 source file to C:\Users\AK_Flex\Desktop\HW01\test\bin
但是,测试类及其导入的常规类(已在“bin”中编译)正在编译并输出到“test/bin”文件夹。 常规类不导入测试类,因此 'bin' 看起来符合要求。 (代码未描述) 有没有办法规避编译器的这种行为?
【问题讨论】:
-
是的,
javac会这样做,如有必要,它会编译命名类所依赖的类。 -
在这种情况下,“如有必要”是什么意思?有没有办法向编译器显示已经编译的文件,所以它不会再次编译它?
-
也许
-implicit:none可以提供帮助,基于documentation ofjavac:“如果您希望能够引用其他源文件中的类型但不希望它们被编译,请使用-隐式选项。”。关于您的评论:-classpath? -
@Jordan181 是的,把已经编译好的文件放到classpath下。