我真的很喜欢Maven的Standard Directory
Layout。
对我来说,关键思想之一是拥有两个源根-一个用于生产代码,一个用于测试代码,如下所示:
MyProject/src/main/java/com/acme/Widget.javaMyProject/src/test/java/com/acme/WidgetTest.java
(在这里,src / main / java和src / test / java都是源根)。
优点:
- 您的测试具有对被测类的包(或“默认”)级别访问权限。
- 通过将src / test / java删除为源根,可以轻松地仅将生产源打包到JAR中。
关于类放置和包的一条经验法则:
一般来说,结构良好的项目将没有循环依赖。了解什么时候他们是坏的(当它们是不是),并考虑像一个工具JDepend或SonarJ这将帮助你消除它们。



