Maven资源替换和Freemarker模板
来源:互联网 发布:现在淘宝生意好做吗 编辑:程序博客网 时间:2024/06/07 11:00
先介绍一下本文的两位主角:
Apache Maven - 正当红的项目管理工具
FreeMarker - 老牌的模板引擎
两者貌似互不相干,何来冲突呢?
原来Maven有一个内置的资源替换机制, 可以对由Maven管理的资源文件进行变量替换。 预定义的Maven属性变量包括${name},${project.version},${project.packaging}和${project.artifactId}等。 熟悉FreeMarker的同学就会发现Maven使用和FreeMarker相同的方法来定义变量:${变量名}。
如果把FreeMarker模板文件放在Maven资源文件目录下(比如src/main/resources), 在缺省配置下, Maven打包工具会扫描这些FreeMarker模板文件并替换其中所有Maven可识别的变量。
举例而言, 有以下FreeMarker模板代码
<tr> <td class="label">Name:</td> <td>${name}</td></tr>
其中的${name}变量应该是FreeMarker变量,由FreeMarker引擎在运行时刻进行替换, 但${name}同时又是一个Maven预定义的变量, 当进行Maven项目打包时, 该变量会被替换成对应的Maven属性值并写入打包文件中, 最终打包文件中的模板会如下所示。
<tr> <td class="label">Name:</td> <td>My Maven project</td></tr>
解决方法有两种, 简单的是在FreeMarker模板中,避免使用Maven属性变量名, 比如将${name}替换成${customerName}, 这样Maven就不会修改这个文件了。
更好的方法是在Maven POM文件中声明对FreeMarker模板文件进行直接复制,不要进行任何Maven资源替换。 如下例所示, 这里定义了两个成对的过滤规则, 第一个规则声明不要对FreeMarker模板文件进行资源替换, 第二个规则则声明对FreeMarker模板文件进行直接复制。
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>**/*.ftl</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <includes> <include>**/*.ftl</include> </includes> </resource></resources>
- Maven资源替换和Freemarker模板
- Maven资源替换和Freemarker模板
- 简易新闻模板:freemarker+maven
- freemarker 替换字符串,模板,可以用来动态生成代码
- 模板:velocity和freemarker的比较
- 模板:velocity和freemarker的比较
- Java模板引擎FreeMarker介绍和使用
- 模板:velocity和freemarker的比较
- Velocity和Freemarker模板牛刀小试(java)
- Java模板引擎FreeMarker介绍和使用
- freemarker 模板
- FreeMarker模板
- freemarker-模板
- freemarker 替换(方括号)语法
- freemarker 替换(方括号)语法
- freemarker字符串替换操作
- maven 插件和资源过滤
- js正则替换和生成模板小结
- Linux:配置SSH安全访问的四个小技巧
- Zipalign: an Easy Optimization
- Objective-c使用动态类型检
- VC编译器命令行语法
- Linux 硬RAID1和不做RAID性能比较
- Maven资源替换和Freemarker模板
- 委托实现了首次定义类时无法确定的一些细节,是通过协议实现的
- 你是合格的程序员吗?—合格程序员应该具备的12种能力
- What is the SQLDump file for?
- 用DBCC CHECKDB修复数据库文件物理损坏
- 如何使用 Sqldumper.exe 为 Windows 应用程序生成转储文件
- [笔记] 在3DSMAX里使用MAXScript做足球
- JavaScript prototype 的深度探索
- JMF的安装与环境的配置