我想知道为什么Java webapps规范强加了依赖项的特定目录:/WEB-INF/lib
。
确实,为什么不使用经典的/META-INF/MANIFEST.MF
文件?
有人会说Web应用程序更加安全,因为libs在物理上集成在WAR文件中。
但是,如果我们这么认为,我们可能会想:
为什么对于简单的Java应用程序(简单的JAR),依赖项没有特殊的目录?它也可能更安全,因为在清单文件中没有错误的类路径(例如,不正确地修改)的风险。
其他人会说webapp设计为可移植的,因此/WEB-INF/lib
的好处是不用担心链接依赖性。
我很想知道你对这个问题的看法。
答案 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基本上是空的。简单的布局,简单的创建,以及最终可以使用的独立工件。