我的Java项目有两个目录,src/
和tests/
,分别包含生产代码和测试代码。
包结构在每个目录中都有镜像—如果src/
具有包a.b.c,则tests/
也具有等效的包a.b.c.来自src/
和tests/
的源文件被编译到目录bin/
中。由于镜像包结构,包a.b.c的测试类与a.b.c.的生产类混合在一起
我希望Ant目标从bin/
中的类构建一个jar,但不包括所有的测试文件。我想通过映射每个文件名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>
最佳解决方案是将src
文件编译到compile
目标中的bin
目录,并将test
文件编译到test-compile
目标中的testbin
目录。在test-compile
目标中为<javac>
设置类路径,以包括bin
目录、JUnit和mocking jar。您需要首先将资源复制到bin
目录,以便使用它们并用测试版本覆盖它们。