“src/main/java”约定的优势是什么?

2022-08-31 15:51:14

我注意到很多项目都有以下结构:

  • 项目-A
    • 自由
    • 来源
      • 主要
        • 爪哇岛
          • 根级别包类.java

我目前使用以下约定(因为我的项目是100%java):

  • 项目-A
    • 自由
    • 来源
      • 根级别包类.java

我目前没有使用Maven,但我想知道这是否是Maven的约定,或者是否有其他原因。有人可以解释为什么第一个版本现在如此受欢迎,以及我是否应该采用这个新惯例?

克里斯


答案 1

主要好处是将目录作为子目录,其目录结构与中的目录结构相同:testsrcmain

  • 项目-A
    • 自由
    • 来源
      • 主要
        • 爪哇岛
          • 根级别包类.java
        • 资源
      • 测试
        • 爪哇岛
          • TestRootLevelPackageClass.java
        • 资源

的所有包私有方法都将是可见的,即可从 进行测试。由于测试代码也是源,因此其位置应位于目录下。RootLevelPackageClassTestRootLevelPackageClasssrc


答案 2

是的,这是Maven公约。

即使您的项目是100%的Java(顺便说一句,Maven的典型情况),您通常也有资源文件(根据Maven约定转到),或Web应用程序的东西,或者......所有这些都很容易适应Maven系统。src/main/resources

如果您对当前的构建系统(无论它是什么)感到满意,则没有理由切换到Maven。否则,或者如果开始一个新项目,您可以评估您的选项,包括Maven。