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

ryo*_*ung 3 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>
Run Code Online (Sandbox Code Playgroud)

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

mha*_*ler 10

您可以在构建时使用Maven的资源过滤 ro替换属性值,例如,通过使用不同的Maven配置文件来设置属性值.

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

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

<Context>
  ...
  <Parameter name="targetURL" value="http://testserver.com"
     override="true"/>
  ...
</Context>
Run Code Online (Sandbox Code Playgroud)