Java 如果Maven Central中有JAR文件,为什么要将它们打包到WAR归档中?

Java 如果Maven Central中有JAR文件,为什么要将它们打包到WAR归档中?,java,servlets,maven,Java,Servlets,Maven,我想知道是否有可能在部署期间通知Servlet容器从Maven Central下载所需的JAR归档,而不是将它们打包到WAR中(在WEB-INF/lib中)。据我所知,Java设计时就考虑到了这种方法。这在技术上是可能的吗?我不知道有哪个servlet容器可以做到这一点。servlet规范说WAR文件将包含应用程序的所有依赖项。当然,任何事情都是“技术上可能的”,这是一个有趣的想法,但我认为你会做很多自定义编码。我唯一想到的一件事就是Virgo网络服务器。它是一个OSGi/Spring DM容器

我想知道是否有可能在部署期间通知Servlet容器从Maven Central下载所需的JAR归档,而不是将它们打包到WAR中(在
WEB-INF/lib
中)。据我所知,Java设计时就考虑到了这种方法。这在技术上是可能的吗?

我不知道有哪个servlet容器可以做到这一点。servlet规范说WAR文件将包含应用程序的所有依赖项。当然,任何事情都是“技术上可能的”,这是一个有趣的想法,但我认为你会做很多自定义编码。我唯一想到的一件事就是Virgo网络服务器。它是一个OSGi/Spring DM容器,它有一个按需加载的概念。可能是。如果这还不是一个选项,那么让它使用远程回购应该是一个相对较短的步骤。Virgo允许WARs和OSGi捆绑包一起部署到它,但它不是一个典型的servlet容器。

我不知道有哪个servlet容器可以做到这一点。servlet规范说WAR文件将包含应用程序的所有依赖项。当然,任何事情都是“技术上可能的”,这是一个有趣的想法,但我认为你会做很多自定义编码。我唯一想到的一件事就是Virgo网络服务器。它是一个OSGi/Spring DM容器,它有一个按需加载的概念。可能是。如果这还不是一个选项,那么让它使用远程回购应该是一个相对较短的步骤。Virgo允许WARs和OSGi捆绑包部署到它,但它不是一个典型的servlet容器。

servlet规范先于maven。这就是为什么war文件应该包含JAR

如果你问他们为什么不改变这一点:两个原因:

  • 它将打破现有习惯和现有servlet容器
  • maven不是标准-标准不能依赖非标准(即使它是事实上的标准)

如果你问这是否可能,这是一个好主意。这是可能的,但可能不是一个好主意。您应该部署已经测试过的东西(在分阶段和/或QA环境中)。您无法确认repo中的依赖项不会被替换,因为您无法确定部署期间与存储库的连接是否正常,这将中断您的部署。

servlet规范在maven之前。这就是为什么war文件应该包含JAR

如果你问他们为什么不改变这一点:两个原因:

  • 它将打破现有习惯和现有servlet容器
  • maven不是标准-标准不能依赖非标准(即使它是事实上的标准)

如果你问这是否可能,这是一个好主意。这是可能的,但可能不是一个好主意。您应该部署已经测试过的东西(在分阶段和/或QA环境中)。您无法确认repo中的依赖项不会被替换,因为您无法确定在部署期间与存储库的连接是否正常,这将中断您的部署。

好的,Maven Central具有非常高的可用性。创建带有Maven Central链接的小型WAR包将非常有效。在我看来,这是一个非常优雅和紧凑的解决方案。您是希望将jar放在servlet容器的类路径上,还是在部署时模拟如果它们在WEB-INF/lib中会发生什么。还有什么好处呢?我想把jar放在servlet容器的类路径上(但只针对这个特定的web应用程序)。我认为JRE应该动态地解决(并下载)这些问题。对吧?从技术上讲是的,但这没有意义。Java应用程序通常部署在私人网络中,无法访问外部世界(如银行)。您希望尽可能减少外部依赖。如果您的应用程序因为maven central出现故障或几年后被重命名而关闭,您的客户将不会高兴。maven central的可用性非常高。创建带有Maven Central链接的小型WAR包将非常有效。在我看来,这是一个非常优雅和紧凑的解决方案。您是希望将jar放在servlet容器的类路径上,还是在部署时模拟如果它们在WEB-INF/lib中会发生什么。还有什么好处呢?我想把jar放在servlet容器的类路径上(但只针对这个特定的web应用程序)。我认为JRE应该动态地解决(并下载)这些问题。对吧?从技术上讲是的,但这没有意义。Java应用程序通常部署在私人网络中,无法访问外部世界(如银行)。您希望尽可能减少外部依赖。如果您的应用程序因为maven central出现故障或几年后被重命名而关闭,您的客户将不会高兴。您能否给出一个提示,说明它在技术上的可行性?如果容器支持maven,它只使用本地maven存储库,或者如果它的空-初始化它,你能给出一个提示,说明它在技术上到底有多可能吗?如果容器支持maven,它只使用本地maven存储库,或者如果它的空-初始化它