在旧版 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>
实现此目标的最佳方法是:
- 很容易获得与 Maven 构建在接触任何东西之前产生的相同输出
- 当使用
mvn tomcat6:run
之类的东西时,应用程序将使用开发配置启动
我目前的想法是将 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。
您可以根据环境使用配置文件
进一步阅读:
我正在继承一个遗留代码库,在这个代码库中,除了 "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>
实现此目标的最佳方法是:
- 很容易获得与 Maven 构建在接触任何东西之前产生的相同输出
- 当使用
mvn tomcat6:run
之类的东西时,应用程序将使用开发配置启动
我目前的想法是将 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。
您可以根据环境使用配置文件
进一步阅读: