Ant - 从Jar中排除我的JUnit测试类

时间:2013-07-11 22:58:25

标签: java ant

我的Java项目有两个目录src/tests/,分别包含生产代码和测试代码。

包结构在每个目录中都有镜像 - 如果src/包含a.b.c,那么tests/也有一个等效的包a.b.c.来自src/tests/的源文件将编译到目录bin/中。由于镜像包结构,包a.b.c的测试类与a.b.c的生产类混合在一起。

我想要一个Ant目标来构建一个jar,来自bin/中的类,但不包括所有测试文件。我想通过映射每个文件名tests/a/b/c/D.java ==> bin/a/b/c/D.class并从jar中排除映射的文件名来实现此目的。

这样的事情:

<target ...>
    <!-- Build a jar that contains the class files which came from -->
    <!-- source files under src/, but not those which came from -->
    <!-- source files under tests/ -->
    <jar ...>
        <fileset dir="bin">
            <!-- EXCLUDE LOGIC -->
        </fileset>
    </jar>
</target>

1 个答案:

答案 0 :(得分:2)

最佳解决方案是将src文件编译到bin目标中的compile目录,并将test文件编译为testbin test-compile目标中的目录。您为<javac>目标中的test-compile设置了类路径,以包含bin目录以及JUnit和模拟jar。您需要先将资源复制到bin目录,以便可以使用它们并使用测试版本覆盖它们。