如何消除web.xml中的硬编码值

时间:2012-06-21 19:55:44

标签: java maven

假设我的web.xml文件中有这样的内容。

<filter name="foo">
  <init-param>
    <param-name>fooBarUrl</param-name>
    <param-value>http://foo.bar.com</param-value>
  </init-param>
</filter>

假设dev / test / production有不同的url值(对于上面的param值)。有没有办法可以在pom中使用过滤器和/或配置文件,以便在每次应用程序移动到不同阶段时都不需要更改它? I.E.对于dev,它将是http://localfoo.com,对于测试,它将是http://testserver.com等等。

2 个答案:

答案 0 :(得分:10)

您可以在构建时使用Maven的 resource filtering ro替换属性值,例如:通过使用不同的Maven配置文件来设置属性值。

另一方面,您可以使用servlet参数并将它们移动到上下文配置,因此您的web.xml会引用它们,并且它们实际上是在部署.war文件的应用程序服务器中配置的。这样,应用程序服务器管理员可以通过在服务器级别配置它来为每个环境重用相同的war文件。

例如,在Tomcat中,您可以在context.xml文件中设置值:

<Context>
  ...
  <Parameter name="targetURL" value="http://testserver.com"
     override="true"/>
  ...
</Context>

答案 1 :(得分:0)

maven-replacer-plugin是我们在项目中用于在构建期间进行此类文本,模式和版本替换的内容。