当使用/META-INF/资源时,WEB-INF会去哪里



我将所有的web资源放入/META-INF/resources中,这样我就可以在不同的web应用程序中重用它们。

但是WEB-INF/内部的web.xml呢?我必须把它保存在src/main/webapp/中吗?或者我也可以把它放在src/main/resources/下吗?

如果是,我该把它放在哪里?src/main/resources/WEB-INF/还是src/main/resources//META-INF/resources/WEB-INF/

我使用Maven和Assembly插件来构建我的项目,而不是WAR插件。

简而言之,您可以。

自Servlet 3.0以来,您可以在web应用程序之间的常规jar文件中共享java类、web资源和web fragment.xml文件。这些罐子被称为"网络碎片"。

来自Servlet 3.1规范的§8.2.1:

。。。

web片段是web应用程序的逻辑分区,这样web应用程序中使用的框架就可以定义所有工件,而无需要求开发人员在web.xml中编辑或添加信息。它可以包括web.xml描述符使用的几乎所有相同的元素。但是,描述符的顶级元素必须是web片段,相应的描述符文件必须称为web.fragment.xml。与排序相关的元素在web.fragmentxml和web.xml之间也有所不同。请参阅第14章部署描述符部分中对应的web片段模式。

如果框架被打包为jar文件,并且具有部署描述符形式的元数据信息,那么web-fragment.xml描述符必须位于jar文件的META-INF/目录中。

因此,您只需要将相同的内容放在META-INF/web-fragment.xml文件中(它共享大部分web.xml XSD(,而不是试图以某种方式嵌入web.xml文件。

你的网络资源在META-INF/resources中,正如你已经发现的那样。

总之,您可以在普通的jar文件中轻松地构建共享组件。您实际上不需要使用maven汇编插件来实现这一点。

在maven项目中,web.xml的标准位置是src/main/webapp/WEB-INF,如果需要,您可以更改它,但在生成的.war文件中,web.xml必须包含在WEB-INF文件夹中。

所以,把web.xml放在src/main/resources/META-INF里面是行不通的。

对于较新的Servlet规范(我认为Servlet 3.0及以上(,可以使用注释,web.xml不是强制性的。

编辑:注意,web.xml是war文件(web应用程序(的标准配置文件,在jar文件(库(中它将被忽略

相关内容

最新更新