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文件(库)中不起作用。谢谢,这让我走上了正确的道路。