我想知道是否有可能以某种方式通知Servlet Container在部署期间从Maven Central下载所需的JAR档案,而不是将它们打包成WAR(在WEB-INF/lib
中)。据我所知,Java的设计考虑了这种方法。技术上可行吗?
答案 0 :(得分:2)
我不知道任何这样做的servlet容器。 servlet规范说WAR文件将包含应用程序的所有依赖项。当然,任何事情都“技术上可行”,这是一个有趣的想法,但我认为你会做很多自定义编码。我认为唯一远远接近的是Virgo Web Server。它是一个OSGi / Spring DM容器,它有a "repository" where artifacts can be found的概念并按需加载。它可以是configured to use a local Maven repo。如果它还不是一个选项,它应该是一个相对较短的步骤,使它使用远程仓库。 Virgo允许将WAR部署到它以及OSGi包,但它不是典型的servlet容器。
答案 1 :(得分:1)
servlet规范在maven之前出现。这就是war文件应该包含jar的原因。
如果你问为什么他们不改变它:两个原因:
如果你问是否可能并且是个好主意。这是可能的,但它可能不是一个好主意。您应该部署已经过测试的内容(在分阶段和/或QA环境中)。您无法确认将不会替换repo中的依赖项,因为您无法确定在部署期间与存储库的连接是否正常,这将破坏您的部署。