Java项目的包结构?

maw*_*dne 105 java packages

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

你会如何设置你的src,单元测试代码等?

joh*_*tok 83

您可以遵循maven的标准项目布局.您不必实际使用maven,但它将在未来(如有必要)使转换更容易.此外,其他开发人员将习惯于看到这种布局,因为许多开源项目都以这种方式布局,

  • 您可以使用此oneliner来创建目录布局:mkdir -p src/{main/{java,resources,filters,assembly,config,webapp},test/{java,resources,filters},site} (14认同)
  • @YoushaAleayoub 你不必嫁给它 (3认同)
  • 如果您有选择,我还建议您使用Maven的布局.这是一个经过深思熟虑的结构,经过了经过实战考验,对许多开发人员来说都很熟悉. (2认同)

lyc*_*ono 55

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

  1. 正确打包Java类
  2. Spring 2.5架构
  3. Java教程 - 命名包
  4. SUN Naming Conventions

对于它的价值,我倾向于使用的个人指南如下:

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

其他几点:

  1. 在我从事设计文档流程的程序包名称的项目中,这是很常见的.通常,产品已经分为功能或目的区域.
  2. 不要过分强调将常用功能推送到更高的包中.等待项目,产品等的需求,然后重构.
  3. 观察包间依赖关系.它们并非都不好,但它可以表示可能是独立单元之间的紧密耦合.有些工具可以帮助您跟踪这一点.

  • 在反向域的情况下("com.mycompany"),除了"mycompany"子包之外,"com"包通常是空的吗? (2认同)

小智 42

我建议按功能创建包结构,而不是按实现层创建.关于这一点的一个很好的写法是Java实践:逐个功能,而不是图层

  • 如果你想切换数据库?只需要查看30种不同的包装.从SFTP迁移到webservices?再次只需要看30个不同的地方.绝对不是粉丝. (7认同)
  • 谢谢.这就是我想要将我的想法传达给团队的原因 (2认同)

Raj*_*Raj 7

The way I usually organise is
- src
        - main
                - java
                - groovy
                - resources
        - test
                - java
                - groovy
- lib
- build
        - test 
                - reports
                - classes
- doc
Run Code Online (Sandbox Code Playgroud)


小智 6

我通常喜欢以下内容:

  • bin(二进制文件)
  • doc(文件)
  • inf(信息)
  • lib(库)
  • 资源(资源)
  • 源代码(来源)
  • tst(测试)

这些可能被认为是非常规的,但我发现这是一种非常好的组织方式。

  • @mahieddine 为什么你认为它们不好? (2认同)