有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

maven Java项目布局是否简单?

我们的项目是由许多使用不同语言的相对较小的组件组成的——java、sql和pascal。每个组件都有自己的存储库和功能范围

所以我们从来没有

  • 混合编程语言
  • 混合功能

大多数新组件使用maven structure,一些java遗留组件使用非常简单的结构,它们只有“src”和“test”文件夹,资源文件保存在java文件附近。事实证明,它非常方便!也许我错过了什么

问题——在我上面提到的情况下,推荐maven结构的理由是什么,为什么不简单地:

  • [“src/main/java”,“src/main/resources”]=>;“src”
  • [“src/test/java”,“src/test/resources”]=>;“测试”

参考文献Why are project layout resources are kept separate from Java sources?


共 (3) 个答案

  1. # 1 楼答案

    “约定优先于配置”,这是Maven的核心设计理念。在我看来,这只是一个规则和标准。因为有HTTP协议,你可以选择不同的浏览器,比如IE和Firefox。最重要的原因是使用约定可以大大减少配置。您还可以在maven中定义自己的文件目录,就像Ant一样,如果您处理的是遗留代码,并且无法更改原始目录结构,那么只能让maven妥协。但除此之外,您没有理由这么做,[“src/main/java”,“src/main/resources”]=>;“src”会让问题变得更复杂,不仅仅是因为这会导致沟通问题,除了你,其他人也不知道为什么要这样做。比如IE兼容性问题,这很糟糕

    <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.*.maven</groupId>
        <artifactId>maven</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <build>
            <!  This told maven that the source is in src/java, no src/main/java  >
            <sourceDirectory>src/java</sourceDirectory>
        </build>
    </project>
    
  2. # 2 楼答案

    我自己的答案。当我们在一个组件(一个VCS存储库)中混合语言和功能时,需要Standart maven结构,例如:

    在这些场景中,这种结构确实很有帮助,它的功能是分离由不同工具处理的不同文件

    如果不是这样,则可以使用更简单的结构

  3. # 3 楼答案

    如果不知道项目/组件的规格,很难回答您的问题

    我的建议是:

    如果您有任何其他文件,如配置文件(即记录器配置文件、数据库配置文件等)、资源(图像、文档模板等),请使用Maven推荐的结构,并将这些文件放在资源下,以便将它们与代码分开。 那会让你

    从另一方面来说,如果你没有类似的文件,那就用你的简单结构吧