我正在开发一个使用JAAS的项目,不幸的是,Tomcat需要将一个文件放在战争根源的META-INF文件夹中
app.war
|__META-INF
| |___context.xml
...
我认为它已经很奇怪,因为WAR的默认META-INF位置在类文件夹中 .
app.war
|__WEB-INF
| |__classes
| |__META-INF
...
所以我正在使用Maven,它声明src / main / resources / META-INF中的任何内容都将被复制到适当的位置 . 奇怪的是,它还在文件结构的根目录中创建了一个META-INF文件夹,留下了2个META-INF文件夹 .
Project Structure
app
|__src/main/java
|__src/main/resources
| |__META-INF
| |__context.xml
...
After mvn package
app
|__META-INF [1]
|__WEB-INF
| |__classes
| |__META-INF [2]
| |__context.xml
...
因此,如果战争标准规定META-INF应该在类文件夹下,如#2,为什么maven war会创建#1文件夹 . 有没有办法让它将文件复制到该文件夹而不是#2?
问候
1 回答
所以我发现了这个:
Two Meta-Inf folders - normal structure?
这表明拥有2个META-INF文件夹不是问题 . 挖了一点我发现:
JAR File Specification
其中说明了META-INF文件夹:
还有这个:
JSR-000315 JavaTM Servlet 3.0
在第10.6节中,说明了WAR文件结构:
所以从WAR规范中,正确的位置是WEB-INF / classes / META-INF . 然而,由于war是一个特殊的jar文件,因此将/ META-INF作为扩展点是有意义的 . 可以在JPA persistence.xml与Tomcat context.xml文件中看到这样的不同用法:前者应该放在WEB-INF / classes / META-INF中,后者应该放在/ META-INF中 .