2017-06-15 124 views
1

其实我是使用Maven和Spring的新手,我很好奇我们如何标准化项目结构。我们知道,如果我们首次创建Maven项目只给出了这样的结构:Maven + Spring项目结构标准

project 
    - pom.xml 
    - src/ 
     - main/ 
       - java/ 
     - test/ 

的java目录是为我们上演了Java代码,我理解这一点。但是,当我们制作一个应该具有HTML,CSS或Javascript等Web文件的Web应用程序时,我们需要另一个目录来放置它。

当我在Maven中使用Spring或Spring Boot时,它创建了资源目录下还有主要目录。所以结构现在看起来是这样:

project 
    - pom.xml 
    - src/ 
     - main/ 
       - java/ 
       - resources/ 
     - test/ 

在其他一些行家web项目的例子,我发现不同的结构,它有的webapp目录下主要也。并在webapp内部有WEB-INFMETA-INF目录。他们把网页文件(HTML,CSS等)放在那里。项目结构为:

project 
    - pom.xml 
    - src/ 
     - main/ 
       - java/ 
       - resources/ 
       - webapp/ 
        - WEB-INF/ 
        - META-INF/ 
          - pages/ *contains html pages 
        - static/ * contains css and javascript files for styling 
    - test/ 

这就是我所困惑的。我对此有一些疑问。

  1. 我们怎么知道它是最好的结构呢?老实说,Maven和Spring应用程序的最佳结构是什么?
  2. 如果结构与我给出的第三个示例类似,那么在调用资产文件时,我们如何在应用程序中使用它?
  3. 当我们构建一些web应用程序时,真的需要WEB-INF和META-INF目录吗?

如果有人能给我一个清晰的解释,我会很感激。谢谢。

回答

0

其实它取决于应用程序的类型。 如果你想创建一个JAR文件,Spring-Boot应用程序,例如,当servlet容器被嵌入时,那么你不需要webapp目录。

所以,单Maven项目为JAR的最佳结构是:

project 
    - pom.xml 
    - src/ 
      - main/ 
       - java/ 
       - resources/ 
      - test/ 
       - java/ 
       - resources/ 

WAR

project 
    - pom.xml 
    - src/ 
      - main/ 
       - java/ 
       - resources/ 
       - webapp/ 
        - WEB-INF/ 
         - web.xml 
        - index.jsp 
        - css/ 
         - styles.css 
      - test/ 
       - java/ 
       - resources/ 

所有文件下webapp(除WEB-INF/**)目录将可直通servlet容器。 另外,如果您正在使用模板引擎并且不想直接访问模板文件,那么您应该将模板放入WEB-INF/目录中,例如:src/main/webapp/WEB-INF/pages/

META-INF目录实际上是Java元目录。你不应该在里面放任何东西。

+0

换句话说,你的意思是它取决于包装类型?如果它是'WAR'或'JAR',它会自动确定项目结构? –

+0

例如,如果我使用thymeleaf,所以我不再需要WEB-INF了,对吧?我只是把** template **放在** resource **目录下。如果我错了,请纠正我。 –

+0

我在这里发现了一些新东西。我使用thymeleaf创建了maven + spring引导应用程序,作为模板引擎和WAR进行打包,但它不创建任何'webapp'目录。我想这是因为'thymeleaf'。我对么? –