In general, for a Java-based Maven project, non-source files should go in the src/main/resources
sub-directory of the project. The contents of that resources
directory are copied to the output directory (by default, target/classes
) during the process-resources phase of the build.
For Maven WAR projects, it is slightly more complicated: there is also the src/main/webapp
directory, wherein Maven expects to find WEB-INF/web.xml
. To build your WAR file, that file must exist; otherwise, you'll see an error message like this:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
As the WEB-INF
directory must exist under src/main/webapp
, I'd recommend avoiding defining it again in src/main/resources
. Although this is perfectly valid and the contents of the two directories will be merged, it can get confusing if a file is defined in both. The contents of src/main/resources
will take precedence as they are copied over the top of the contents from src/main/webapp
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…