2017-06-15 3 views
1

Eigentlich bin ich neu in Maven und Spring, und ich bin gespannt, wie wir die Projektstruktur standardisiert haben. Wie wir wissen, wenn wir Maven-Projekt zum ersten Mal erstellen gibt es nur diese Struktur:Maven + Spring Projektstruktur Standard

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

Das java Verzeichnis ein Verzeichnis ist für uns die Java-Codes zu setzen, das verstehe ich. Wenn wir jedoch eine Webanwendung erstellen, die Webdateien wie HTML, CSS oder Javascript enthalten soll, benötigen wir ein anderes Verzeichnis, um sie zu platzieren.

Wenn ich Frühling oder Frühling-Boot in Maven verwendet, erstellt es Ressourcen Verzeichnis auch unter Haupt Verzeichnis. So, jetzt die Struktur sieht wie folgt aus:

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

In einigen anderen Maven Webprojekt Beispiele, fand ich andere Struktur, es Webapp Verzeichnis unter Haupt auch hatte. Und innerhalb der webapp hatte es WEB-INF und META-INF Verzeichnis. Sie legen Web-Dateien (HTML, CSS, usw.) hinein. Die Projektstruktur war:

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/ 

Und das ist, worüber ich verwirrt bin. Ich habe ein paar Fragen dazu.

  1. Woher wissen wir, dass es eine beste Struktur ist oder nicht? Ehrlich, was ist die beste Struktur für Maven und Feder-Anwendung?
  2. Wenn die Struktur wie das dritte Beispiel ist, das ich angegeben habe, wie verwenden wir es in unserer Anwendung, wenn wir die Asset-Dateien aufrufen?
  3. Werden WEB-INF und META-INF-Verzeichnis wirklich benötigt, wenn wir einige Webanwendungen erstellen?

Ich werde dankbar sein, wenn mir jemand eine klare Erklärung geben könnte. Vielen Dank.

Antwort

0

Tatsächlich hängt es vom Typ einer Anwendung ab. Wenn Sie eine JAR-Datei Spring-Boot-Anwendung erstellen möchten, zum Beispiel wenn der Servlet-Container eingebettet ist, benötigen Sie das Verzeichnis webapp nicht.

So ist die beste Struktur einzelnen Maven Projektes für JAR ist:

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

Für WAR:

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

Alle Dateien unter webapp (außer WEB-INF/**) Verzeichnis durch Servlet-Container zur Verfügung stehen wird. Wenn Sie die Vorlagen-Engine verwenden und keinen direkten Zugriff auf die Vorlagen-Dateien gewähren möchten, sollten Sie Vorlagen in das Verzeichnis WEB-INF/ stellen, z. B .: src/main/webapp/WEB-INF/pages/.

Und META-INF Verzeichnis ist tatsächlich Java Meta-Verzeichnis. Du solltest nichts hineinstecken.

+0

Also, mit anderen Worten meinen Sie, dass es von der Verpackungsart abhängt? Wenn es 'WAR' oder' JAR' ist, bestimmt es automatisch die Projektstruktur? –

+0

Zum Beispiel, wenn ich thymeleaf verwende, brauche ich WEB-INF nicht mehr, richtig? Ich habe nur ** Vorlage ** unter ** Ressource ** Verzeichnis. Bitte korrigieren Sie mich, falls ich falsch liege. –

+0

Ich habe hier etwas neues gefunden. Ich erstelle Maven + Spring Boot-Anwendung mit Thymeleaf als Vorlage-Engine und WAR für die Verpackung, aber es erstellt kein "Webapp" -Verzeichnis. Ich denke, es ist, weil der 'Thymeleaf'. Hab ich recht? –