2017-06-15 17 views
1

実際に私はMavenとSpringを使用することに新しく、私はプロジェクト構造をどのように標準化しているのか不思議です。私たちが知っているように、我々は初めてのMavenプロジェクトを作成する場合、それだけでこのような構造を与える:私たちはJavaのコードを配置するためMaven + Springプロジェクト構造標準

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

のjavaディレクトリはディレクトリですが、私はそれを理解しています。しかし、HTML、CSS、JavascriptなどのWebファイルが必要なWebアプリケーションを作成するには、別のディレクトリが必要です。

私はMavenの中に春や春のブートを使用する場合、それはメインディレクトリの下にもリソースディレクトリを作成しました。だから、構造は次のようになります。いくつかの他のMaven Webプロジェクトの例では

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

を、私は別の構造を発見し、それはまた、メインWebアプリケーションディレクトリを持っていました。 webappの中にはWEB-INFMETA-INFというディレクトリがあります。彼らはそこにWebファイル(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番目の例のようなものであれば、アセットファイルを呼び出すときにアプリケーションでどのように使用するのですか?
  3. いくつかのWebアプリケーションを構築する場合、WEB-INFとMETA-INFディレクトリは本当に必要ですか?

誰かが私に明確な説明を与えることができれば感謝します。ありがとう。

答えて

0

実際には、アプリケーションの種類によって異なります。 JARファイル(Spring-Bootアプリケーション)をサーブレットコンテナが埋め込まれている場合などに作成する場合は、webappディレクトリは必要ありません。

ので、JARのための単一のMavenプロジェクトの最良の構造は次のとおりです。

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/**を除く)サーブレットコンテナスルー利用できるようになります。 また、テンプレートエンジンを使用していてテンプレートファイルに直接アクセスしたくない場合は、テンプレートをWEB-INF/ディレクトリに配置する必要があります(src/main/webapp/WEB-INF/pages/)。

META-INFディレクトリは実際にJavaのメタディレクトリです。あなたはその中に何かを置くべきではありません。

+0

つまり、言い換えれば、パッケージの種類によって異なりますか? 'WAR'または' JAR'の場合、プロジェクト構造を自動的に決定しますか? –

+0

例えば、私がthymeleafを使ってWEB-INFはもう必要ないのですが、そうですか? ** resource **ディレクトリの下に**テンプレート**を置くだけです。私が間違っているなら、私を修正してください。 –

+0

私はここで何か新しいものを見つけました。私はテンプレートエンジンとしてthymeleafとパッケージ化のWARを使ってmaven + springブートアプリケーションを作成しますが、 'webapp'ディレクトリは作成しません。私はそれが 'thymeleaf'だと思う。私は正しいですか? –

関連する問題