使用Javac/Ant编译1文件也会编译指定文件中的导入文件/类
手头的任务是使用Ant脚本分别编译Java类及其关联的JUnit“Test”类。 常规类存储在'src'中,而测试类存储在'test/src'中。常规类应编译为“bin”,测试类应编译为“test/bin”。两者都在同一个包裹里 我的Ant脚本如下所示:使用Javac/Ant编译1文件也会编译指定文件中的导入文件/类,java,junit,ant,javac,Java,Junit,Ant,Javac,手头的任务是使用Ant脚本分别编译Java类及其关联的JUnit“Test”类。 常规类存储在'src'中,而测试类存储在'test/src'中。常规类应编译为“bin”,测试类应编译为“test/bin”。两者都在同一个包裹里 我的Ant脚本如下所示: <javac includeantruntime="false" classpathref="master-classpath" destdir="${test.class.build.dir}"
<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>
但是,测试类及其导入的常规类(已在“bin”中编译)正在编译并输出到“test/bin”文件夹。
常规类不导入测试类,因此“bin”看起来与所需的一样。(未描述代码)
有没有办法避免编译器的这种行为?因为您希望在两个不同的文件夹中编译类,所以需要两个编译步骤
是的,javac
会编译命名类所依赖的类(如有必要)。在本文中,“如有必要”是什么意思?有没有一种方法可以向编译器显示已经编译过的文件,这样它就不会再编译它了?也许-implicit:none
会有所帮助,基于javac
:“如果您希望能够引用其他源文件中的类型,但不希望编译它们,请使用-implicit选项。”。关于您的评论:-classpath
?@Jordan181是的,将已编译的文件放在类路径上。谢谢。现在它可以正常工作了,我执行了两个编译步骤,但在第二步中缺少已编译文件的生成目录路径。
[javac] Compiling 1 source file to C:\Users\AK_Flex\Desktop\HW01\test\bin