Freemarker源码

Github源码是gradle编译的,部分源码是在编译后自动生成class文件的,如:src/main/javacc/FTL.jj文件,此文件就是在编译时,生成FMParser.class文件。
我不熟悉gradle,并且不想去研究那个东西,所以直接选择了反编译,然后去处理maven依赖。

Maven编译Freemarker源码

码云源码是maven编译的,并且自己做了简单的二开。

搭建maven工程时,做了以下删减,因为这些不需要。

  • 去除了xalan:xalan依赖及代码
  • 去除了jdom:jdom依赖及代码
  • 去除了javax.servlet:javax.servlet-api依赖及代码
  • 去除了org.apache.ant:ant依赖及代码
  • 去除了org.python:jython-standalone依赖及代码
  • 去除了org.zeroturnaround:javarebel-sdk依赖及代码
    以上依赖,有可能是不准确的,去掉相关代码后,是可以跑起来的,并且是按照我的预期进行了测试。

做了以下改动:
背景:占位符#{}是freemarker专门针对数字进行渲染,由于一些原因,不再推荐使用这个占位符,虽然是废弃了,但是仍然支持解析。
期望:我不希望freemarker再去渲染#{}的值
改动:改造了freemarker.core.FMParserTokenManager#getNextToken方法,加了这个判断#if (jjmatchedKind == 83) {jjmatchedKind = 80;}将#{改造为了解析文本的标识,例如#{test},原操作是freemarker会去数据对象中拿test的值,改造后是直接输出#{test}字符串。

为什么不修改占位符解析的源码?
没有改动解析#{}占位符的源码,这是因为,freemarker.core.FMParser这个类是通过FTL.jj文件进行编译的,你可以看freemarker的github源码,里面是找不到这个类的,这个类是在编译时,将FTL.jj文件编译成了class文件。我不想去研究这个玩意,因为里面写的代码,指向性不强,因此仅在渲染的时候进行了处理,直接返回原字符串。

Maven编译Freemarker源码及二开相关推荐

  1. 使用Maven编译Tomcat源码

    使用Maven编译Tomcat源码 准备工作 编译工具:Intellij Idea 15.0.2 Tomcat版本:7.0.69 下载链接 JDK版本:1.7.0_80 Maven版本:3.05 编译 ...

  2. 电竞比分源码/免买分源码/可二开/支持最新PHP7.3/LOL,王者,吃鸡等等电竞比分源码

    简介: [独家分享]比分源码/免买分源码/可二开/支持PHP7.3 OS6.5 到7.5 推荐7.4 Nginx -Tengine2.2.3 MySQL 8.0.16 PHP 7.3 Redis 5. ...

  3. 后天淘宝客系统二次开发版【需后天授权码】此源码是二开后的

    声明:必须是你已经购买过后天淘宝客系统授权码的.绑定了域名.才可以使用.这个只是二次开发过后的源码.源码是通用的. 然后将本站系统买去使用并用你的授权码才可以正常使用. 下面大多数功能都是找官方二次开 ...

  4. h5app多功能商城源码可二开微信小程序商城开源版分享

    基于ThinkPhp6.0+uniapp 开发的一套新零售商城系统.集客户关系管理+营销电商系统,能够真正帮助企业基于微信公众号.小程序.wap.pc等,实现会员管理.数据分析,精准营销的电子商务管理 ...

  5. Dynread微信商城源码(二开利器)

    Dynread微信商城(开源),基于JooLun-wx二开优化,技术架构为 Java + SpringBoot + Maven + Swagger + Mybatis Plus + Redis + V ...

  6. JAVA 单商户商城系统 成熟源码 支持二开

    三勾商城是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS + Android + 公众号 + H5 + 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开 ...

  7. 2023 在线截图生成工具多功能系统html源码 可二开

    源码项目全部开源,支持电脑和手机端在线制作生成!该源码可直接上传虚拟空间解压缩即可访问,搭建操作简单方便!源码为html,可二开! 工具功能介绍: 在线一键制作各种截图生成,包含生成功能:微信对话.微 ...

  8. 王者赏金赛源码 可二开 原生开发

    非常精品的高质量源码产品 支持百万人同时在线 可二开 也可以增加多种游戏 例如 和平精英赏金赛   英雄联盟  只要竞技游戏都可以添加 本套源码采用 springboot分布式架构 java+安卓+i ...

  9. 教育直播源码丨万岳教育直播平台源码丨源码支持二开

    万岳教育平台满足大班课.小班课.1V1.录播.图文等多种教学场景 一.万岳教育直播平台源码更多实用教学工具 白板 互动式电子白板,可同步涂鸦,超越线下课堂的实时交互. 答题器 交互式抢答器,活跃课堂气 ...

最新文章

  1. python怎么把数据写入txt-如何将python中文件写入TXT
  2. Lecture 2 Asymptotic Notation
  3. 现在的年轻人,正在努力的改变着一些东西
  4. Cloud一分钟 | 微软Azure云服务宣布又一重磅应用落地;微软云计算转型迅猛,或助其市值短期达到1万亿美元...
  5. lombok常用注解使用说明
  6. 神州12号航天员确定:住110米“大平层” 有120种美食
  7. 【037】Excel 中遍历修改文件(VBA)
  8. 命令行工具恢复文件 foremost 和 extundelete 简介
  9. mediacodec配置h265解码
  10. qemu运行linux内核很慢,bugfix: Qemu 运行 ARM Linux 5.0 必现启动死机
  11. 基于433MHz无线网络和PMS132B SOP14照明驱动方案开发
  12. 游戏模型与动漫之间,有多大差距?
  13. nginx反向代理实现指定接口访问指定机器
  14. Matlab画三维立体网状图形(类似魔方)
  15. 培训班出来,碰到查学历,哎宝宝苦。
  16. 电脑计算机硬盘怎么新建,电脑如何新建一个本地磁盘
  17. 阿里云 1H2G T5实例 与 腾讯云 1H2G 标准2实例 测试对比
  18. 水库大坝安全检测平台实例分析+辽阳市水库大坝安全检测平台+志豪未来科技有限公司+陈志豪
  19. 在程序大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
  20. 58显示服务器异常怎么回事,手机登录云服务器异常

热门文章

  1. Origin绘制多折线图
  2. python mpi4py 读取json_Python:使用mpi4py通过spawn将数组bcast到其他脚本
  3. 人类首个基因编辑婴儿项目,历史伦理最终会站在哪一边?
  4. 网络通信服务器小型框架
  5. mysql中的擎天柱---InnoDB引擎
  6. matlab多项式多个值代入求值,[转载]Matlab 解惑之——多项式运算
  7. 锂电池正常分容测试温度的软件,实现节能环保,锂电池化成分容测试方案不可少...
  8. 【正点原子Linux连载】第三十一章 U-Boot顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
  9. VINS-Mono详解(一)
  10. Gazebo仿真记录 Turtlebot3 + D435i