Mybatis的动态SQL无疑给Java开发者带来极大方便,其中用户读取变量值的符号有“#”和“$”。
而Maven配置文件(pom.xml)和Spring的配置文件中也是采用“$”读取变量值。我们在项目开发中,要是一个不小心,项目配置文件中的变量名称和pom.xml中的变量名重名了,那么在编译的过程中,则会对其进行替换,将变量替换成pom.xml中的变量。
最近在一个项目的Mybatis的映射文件中使用了“${name}”,编译过后,这部分就被替换成了项目名称。这就在运行相应功能时,会出现问题。
在排查过程中,发现项目编译的资源文件中使用了过滤配置,即根据不同的参数,生成不同的环境配置文件,可以打不同版本的程序包。
最后的解决方案是:将相应的资源文件分组,需要过滤的为一组,不需要过滤的为一组,则可以完美的解决这个问题,毕竟<build>标签中是有 <resources>然后再有<resource>的。