maven项目中 maven中的id,version等属性值会替换掉freemarker模板中的属性值

Maven有一个内置的资源替换机制, 可以对由Maven管理的资源文件进行变量替换。 预定义的Maven属性变量包括${name},${version} ,${id},${project.version},${project.packaging}和${project.artifactId}等

 熟悉FreeMarker的同学就会发现Maven使用和FreeMarker相同的方法来定义变量:${变量名}。

如果把FreeMarker模板文件放在Maven资源文件目录下(比如src/main/resources), 在缺省配置下, Maven打包工具会扫描这些FreeMarker模板文件并替换其中所有Maven可识别的变量。

比如

这时候编译后,target中的代码就会变成

那么这个   0.0.1-SNAPSHOT   是哪来的呢,经查找是pom.xml中的

maven项目中 maven中的id,version等属性值会替换掉freemarker模板中的属性值_第1张图片

解决方法:

1. 最简单的是在FreeMarker模板中,避免使用Maven属性变量名, 比如将${version}替换成${userVersion}, 这样Maven就不会修改这个文件了。

2. 更好的方法是在Maven POM文件中声明对FreeMarker模板文件进行直接复制,不要进行任何Maven资源替换。 如下例所示

maven项目中 maven中的id,version等属性值会替换掉freemarker模板中的属性值_第2张图片

不对src/main/resources/page下的文件夹中的  .ftl文件进行替换,原封不动的复制过来,这样代码就不会被改变了

【右上角点个赞,谢谢】

你可能感兴趣的:(个人总结)