前些天写项目的时候碰到一个需求:由于项目在编译打包的时候有三个环境,整合了cas之后需要在web.xml里配置路径,希望在编译的时候这些路径可以像spring的配置文件里一样,能够从.properties文件里读出来(类似于使用$来根据环境取对应的路径)。鉴于自己比较菜,然后在网上找到了解决办法,试了一下果然好用。配置如下:
<build>
<finalName>${finalWarName}</finalName>
<defaultGoal>compile</defaultGoal>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
<includes>
<include>WEB-INF/web.xml</include>
</includes>
<targetPath>${project.build.directory}/${project.build.finalName}</targetPath>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<!-- http://maven.apache.org/plugins/maven-war-plugin/ -->
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
<outputDirectory>${war.outpath}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
在resource中包含了web.xml并将其输出至默认目录,并在war插件中指明webXml属性,此二者缺一不可。
效果:
打包前:
<init-param>
<!-- 到服务器地址,注意后面的/login -->
<param-name>casServerLoginUrl</param-name>
<param-value>${H5UIDesigner.cas.server.host}/login</param-value>
</init-param>
<init-param>
<!-- 本程序所在的URL -->
<param-name>service</param-name>
<param-value>${H5UIDesigner.cas.service.host}/login</param-value>
</init-param>
打包后:
<init-param>
<!-- 到服务器地址,注意后面的/login -->
<param-name>casServerLoginUrl</param-name>
<param-value>https://cas.paxdata.com:8443/cas/login</param-value>
</init-param>
<init-param>
<!-- 本程序所在的URL -->
<param-name>service</param-name>
<param-value>https://localhost:8444/H5UIDesigner/login</param-value>
</init-param>
本文介绍如何在Maven项目中配置资源过滤,实现在编译时动态读取web.xml中的参数值,通过定义特定的配置,可以在打包过程中替换web.xml中的占位符为实际的环境变量。

被折叠的 条评论
为什么被折叠?



