【问题标题】:Avoid deep directory structure in a java project避免在 java 项目中使用深层目录结构
【发布时间】:2014-11-25 16:51:43
【问题描述】:

是否有可能(例如在 ant 的帮助下)避免伴随深度包嵌套而来的深度目录结构?

假设我在包 com.domain.name 中编写了 ClassA 和 ClassB,是否可以避免像这样的目录布局

project/
- build.xml
- src/
  - com/
    - domain/
      - name/
        - ClassA.java
        - ClassB.java

选择更简单的

project/
- build.xml
- src/
  - ClassA.java
  - ClassB.java

【问题讨论】:

  • 你到底为什么要这样做? Java包结构自带的强制目录结构是Java的特性之一。对我来说,这听起来很像 XY 问题。
  • 如果你的类 ClassA 被声明在包 com.domain.name 中,那么它必须在物理上位于文件系统上的目录 com/domain/name 中或在同名的存档条目中,如果在.jar 内。
  • @BoristheSpider 每个 *.java 文件都将在同一个包中,将它们放在主源文件夹中对我来说似乎更自然,特别是因为我已经学会了分离项目和分发结构。基本上,这只是为了舒适。
  • @SotiriosDelimanolis 所以没有办法(除了硬链接体操)来完成这个吗?

标签: java ant directory-structure


【解决方案1】:

不鼓励这种结构的原因是它不能很好地扩展。您的示例仅限于在同一个包中包含两个类。当您在不同包中或具有不同包祖先的类时会发生什么?

For example
project/
- build.xml
- src/
  - com/
    - domain/
      - package1/
        - ClassA.java
        - ClassB.java
      - package2
        - ClassC.java

这对于中等规模的项目(甚至是小型项目)来说更易于维护。您建议的替代方案已经令人困惑,因为它根本不传达结构。

For example
project/
- build.xml
- src/
    - ClassA.java
    - ClassB.java        
    - ClassC.java

关于“是否可能”的更大问题,Java 不要求目录结构与包结构匹配,尽管约定很严格。见Package name is different than the folder structure but still Java code compiles

【讨论】:

    猜你喜欢
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2012-11-04
    • 2012-05-22
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多