2017-06-15 80 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'。我對麼? –