在旧版 Java 网络应用程序中的 web.xml 个文件之间切换

Switch between web.xml files in a legacy Java webapp

我正在继承一个遗留代码库,在这个代码库中,除了 "copy files around into your source tree." 之外,没有人真正引入过处理不同环境的合理方法。我正在尝试重新引入一些理智而不破坏一切。

前端webapp的web.xml(在Tomcat6.x上使用SpringMVC3.x)包含一堆代理到的servlet一个不同的 URL:

<servlet>
    <servlet-name>FooProxy</servlet-name>
    <servlet-class>org.mortbay.servlet.ProxyServlet$Transparent</servlet-class>
    <init-param>
        <param-name>ProxyTo</param-name>
        <param-value>http://example.com/foo/</param-value>
    </init-param>
</servlet>

对于本地开发,这必须替换为代理到某种开发服务器的 servlet:

<servlet>
    <servlet-name>FooProxy</servlet-name>
    <servlet-class>org.mortbay.servlet.ProxyServlet$Transparent</servlet-class>
    <init-param>
        <param-name>ProxyTo</param-name>
        <param-value>http://localhost:8080/foo/</param-value>
    </init-param>
</servlet>

实现此目标的最佳方法是:


我目前的想法是将 web.xml 的版本放入非标准源文件夹中,例如:

`--envs
   |
   |--prod
   |  |
   |  `--webapp
   |     |
   |     `--web.xml // the original ("production") configuration
   |
   `--dev
      |
      `--webapp
         |
         `--web.xml // the development configuration

也就是说:每个 "environment" 文件夹都包含通常在 src/main/webapp 中的替代版本。然后我将使用 Maven 配置文件插入这些文件夹,生产文件夹默认处于活动状态。

我什至不知道如何配置该文件夹的位置,因为 Maven 文档有时很糟糕。我所知道的是 src/main/webapp 是在 某处 定义的约定。我也不知道 tomcat6 插件是否会在存在不同的 webapp 文件夹时使用,是否可以配置更多文件夹以及是否可以正常工作。 (理想情况下,我想将 webapp 下的许多文件保留在默认文件夹中的环境之间,并将其与环境文件夹合并。)

实现您的要求的更好方法是使用 maven 配置文件。

您可以拥有 dev 和 production 的配置文件,这将定义此 ProxyURL。

您可以根据环境使用配置文件

进一步阅读:

  1. http://maven.apache.org/guides/introduction/introduction-to-profiles.html
  2. https://maven.apache.org/guides/mini/guide-building-for-different-environments.html