zoukankan      html  css  js  c++  java
  • 161213、Maven资源替换和Freemarker模板

    先介绍一下本文的两位主角:

    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>My Maven project</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/java</directory>
    <filtering>true</filtering>
    <includes>
    <include>**/*.properties</include>
    <include>**/*.xml</include>
    <include>**/*.ftl</include>
    <include>**/*.tpl</include>
    </includes>
    </resource>

    <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    <includes>
    <include>**/*.properties</include>
    <include>**/*.xml</include>
    <include>**/*.ftl</include>
    <include>**/*.tpl</include>
    </includes>
    </resource>
    </resources>

    注:没有第二个规则的话,FreeMarker模板文件不会被复制到最终的打包文件中。

     
  • 相关阅读:
    在WPF中添加Windows Form控件
    LIST对象排序问题
    C# TreeView树节点上下移动
    C# listbox的上下移动,拖动排序,两个listbox相互拖动
    Nmap 扫描并生成HTML报告
    Windows 10 系统精简方案参考
    Windows10 子系统 Ubuntu安装
    VS2012 RC页面检查器
    新增功能.NET 框架 4.5 RC
    PowerPoint Storyboarding:Visual Studio 2012 RC带给开发者的秘密杀器
  • 原文地址:https://www.cnblogs.com/zrbfree/p/6216345.html
Copyright © 2011-2022 走看看