为什么喜欢/ WEB-INF / lib到/META-INF/MANIFEST.MF用于webapps?

时间:2011-11-17 20:46:01

标签: java web-applications tomcat dependencies manifest

我想知道为什么Java webapps规范强加了依赖项的特定目录:/WEB-INF/lib

确实,为什么不使用经典的/META-INF/MANIFEST.MF文件?

有人会说Web应用程序更加安全,因为libs在物理上集成在WAR文件中。

但是,如果我们这么认为,我们可能会想:

为什么对于简单的Java应用程序(简单的JAR),依赖项没有特殊的目录?它也可能更安全,因为在清单文件中没有错误的类路径(例如,不正确地修改)的风险。

其他人会说webapp设计为可移植的,因此/WEB-INF/lib的好处是不用担心链接依赖性。

我很想知道你对这个问题的看法。

2 个答案:

答案 0 :(得分:5)

jar是标准库。对于普通的实用罐子,最好将它们分开。如果一个库依赖于不同的库,并且你需要更多的依赖库,那么一旦你将浪费空间,内存和可能包含不同的库版本的问题。

然而,Web应用程序是一个应用程序包。您必须确保每个方法都有效,以便添加所需的库。

答案 1 :(得分:1)

因为WEB-INF / lib提供了一个非常简单,自包含的库包,并简化了最常见用例的整个部署。

/WEB-INF/web.xml
/WEB-INF/lib/utils.jar
/WEB-INF/classes/com/example/Servlet.class
/page.jsp

那是一个完整的船WAR,使用Servlet 3.0,web.xml基本上是空的。简单的布局,简单的创建,以及最终可以使用的独立工件。