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