Maven Overlay vs ClassLoader Magic?

Maven Overlay vs ClassLoader Magic?

我正在阅读 Maven WAR Overlays 并试图了解他们的用例。

According to this article,当您有多个需要共享相同资源的 WAR(CSS、JS、HTML 等)时,它们很有用。

但是,为什么我不能将所有可重用的 code/resources 放入共享 JAR,然后在运行时访问 CS/JS/HTML/etc。通过典型的 ClassLoader#getResourceAsStream() 魔法获取资源?

我是不是漏掉了什么? Maven Overlays 是否真的解决了这里的一个独特问题(如果是,那是什么?!?)。

Overlays 不仅仅是重复使用。它为您提供了一种生成大量工件的巧妙方法,所有工件均从通用代码库 (war) 开始,而不是调整其配置、实现或静态资源。

举例说明,对于大多数项目,我们在 CI 上进行了 Selenium 测试 运行。它们都 运行 与我们的原始 WAR 重叠,其中,为了测试的目的,我们交换了所有 class 与第三方系统通信的实现(例如 spring 集成网关),通常使用自定义 web.xml 添加一些与 Jetty 服务器上的 运行ning 测试相关的细节,经常调整静态文件(js,css)用于各种目的(重现错误,测试动态布局)

在使用覆盖之前,我们严重依赖 maven 配置文件,配置 maven-war-plugin 的 webResources,使用 Spring 配置文件,但仍然无法满足我们的一些需求,并且更难维护。