实际上我是使用Maven和Spring的新手,我很好奇我们对项目结构的标准化。众所周知,如果我们第一次创建Maven项目,它只会给出这种结构:
project
- pom.xml
- src/
- main/
- java/
- test/
java 目录是我们放置java代码的目录,据我所知。但是,当我们创建一个应该包含HTML,CSS或Javascript等Web文件的Web应用程序时,我们需要另一个目录来放置它。
当我在Maven中使用Spring或Spring Boot时,它还在 main 目录下创建了 resources 目录。所以结构现在看起来像这样:
project
- pom.xml
- src/
- main/
- java/
- resources/
- test/
在其他一些maven web项目示例中,我发现了不同的结构,它还有主下的 webapp 目录。在 webapp 中,它有 WEB-INF 和 META-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/
这就是我感到困惑的事情。我对此有一些疑问。
如果有人能给我一个明确的解释,我将感激不尽。感谢。
答案 0 :(得分:0)
Actually it depends on the type of an application.
If you want to make a JAR
file, Spring-Boot application, for example, when servlet container is embedded, then you don't need the webapp
directory.
So, the best structure of single Maven project for JAR
is:
project
- pom.xml
- src/
- main/
- java/
- resources/
- test/
- java/
- resources/
For WAR
:
project
- pom.xml
- src/
- main/
- java/
- resources/
- webapp/
- WEB-INF/
- web.xml
- index.jsp
- css/
- styles.css
- test/
- java/
- resources/
All files under webapp
(except WEB-INF/**
) directory will be available thru servlet container.
Also, if you are using template engine and don't want to give an access to the templates files directly, then you should put templates into WEB-INF/
directory, like: src/main/webapp/WEB-INF/pages/
.
And META-INF
directory actually is Java meta directory. You should not put anything inside of it.