Jakarta ee 当使用/META-INF/resources时,WEB-INF会去哪里?

Jakarta ee 当使用/META-INF/resources时,WEB-INF会去哪里?,jakarta-ee,Jakarta Ee,我把我所有的网络资源都放到/META-INF/resources中,这样我就可以在不同的网络应用程序中重用它们 但是web-INF/内部的web.xml呢?我是否必须将其保存在src/main/webapp/中,或者也可以将其放在src/main/resources/下 如果是,我应该把它放在哪里src/main/resources/WEB-INF/或src/main/resources//META-INF/resources/WEB-INF/ 我正在使用Maven和汇编插件来构建我的项目,而不

我把我所有的网络资源都放到
/META-INF/resources
中,这样我就可以在不同的网络应用程序中重用它们

但是
web-INF/
内部的
web.xml
呢?我是否必须将其保存在
src/main/webapp/
中,或者也可以将其放在
src/main/resources/

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


我正在使用Maven和汇编插件来构建我的项目,而不是WAR插件。

在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文件(库)中它将被忽略。

简而言之,您可以

自Servlet3.0以来,您可以在一个常规jar文件中在web应用程序之间共享java类、web资源和web-fragment.xml文件。这些JAR被称为“web片段”

根据Servlet 3.1规范的§8.2.1:

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

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

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

正如您已经发现的,您的web资源位于META-INF/resources中


总之,您可以轻松地在普通jar文件中构建共享组件。要做到这一点,你真的不需要搞乱maven assembly插件。

虽然OP没有使用正确的术语,但OP基本上是在谈论一个“web片段”JAR项目,而不是WAR项目。你的答案是无效的。哦,我明白了,请注意web.xml是war文件(web应用程序)的标准配置文件,它在jar文件(库)中不起作用。谢谢,这让我走上了正确的道路。