Java项目的包结构?

在Java Web应用程序中设置包结构的最佳实践是什么?

你将如何设置你的src,unit testing代码等?

你可以按照maven的标准项目布局 。 你不必真的使用maven,但是将来可以使转换更容易(如果需要的话)。 另外,其他的开发者也会习惯看这个布局,因为很多开源项目都是这样布局的,

您可能会检查一些现有的资源:

  1. 正确地打包你的Java类
  2. Spring 2.5架构
  3. Java教程 – 命名一个包
  4. SUN命名约定

对于什么是值得的,我倾向于使用自己的个人指导方针如下:

  1. 从反向域开始,例如“com.mycompany”。
  2. 使用产品名称,例如“myproduct”。 在某些情况下,我倾向于使用不属于特定产品的普通包装。 这些最终将根据这些常见类别的function进行分类,例如“io”,“util”,“ui”等。
  3. 在此之后,它变得更自由forms。 通常我根据项目,function区域,部署等进行分组。例如,我可能会有“project1”,“project2”,“ui”,“client”等。

其他几点:

  1. 在我从事devise文档的软件包名称工作的项目中,这是很常见的。 通常产品已经分成function或用途的区域。
  2. 不要过分强调将常用function推入更高级的包中。 等待那里需要跨项目,产品等,然后重构。
  3. 观察包间依赖关系。 它们并不全是坏的,但它可能意味着可能是单独的单元之间的紧密耦合。 有些工具可以帮助你跟踪这一点。

我会build议按function创build你的包结构,而不是实现层。 一个好的写法是Java的做法:按function打包,而不是层

在这里,您可以阅读关于标准目录布局和关于java项目的目录/包结构。

我通常喜欢有以下几点:

  • bin(二进制文件)
  • doc(文档)
  • inf(信息)
  • lib(库)
  • res(资源)
  • src(来源)
  • tst(testing)

这些可能被认为是非常规的,但我觉得这是一个很好的组织方式。

另一篇关于Java包结构的非常好的文章: pipe理Java类path

我通常有我的文件夹层次结构的方式 –

  • 项目名
    • SRC
    • 箱子
    • testing
    • 文档