Maven编译Freemarker源码及二开
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源码及二开相关推荐
- 使用Maven编译Tomcat源码
使用Maven编译Tomcat源码 准备工作 编译工具:Intellij Idea 15.0.2 Tomcat版本:7.0.69 下载链接 JDK版本:1.7.0_80 Maven版本:3.05 编译 ...
- 电竞比分源码/免买分源码/可二开/支持最新PHP7.3/LOL,王者,吃鸡等等电竞比分源码
简介: [独家分享]比分源码/免买分源码/可二开/支持PHP7.3 OS6.5 到7.5 推荐7.4 Nginx -Tengine2.2.3 MySQL 8.0.16 PHP 7.3 Redis 5. ...
- 后天淘宝客系统二次开发版【需后天授权码】此源码是二开后的
声明:必须是你已经购买过后天淘宝客系统授权码的.绑定了域名.才可以使用.这个只是二次开发过后的源码.源码是通用的. 然后将本站系统买去使用并用你的授权码才可以正常使用. 下面大多数功能都是找官方二次开 ...
- h5app多功能商城源码可二开微信小程序商城开源版分享
基于ThinkPhp6.0+uniapp 开发的一套新零售商城系统.集客户关系管理+营销电商系统,能够真正帮助企业基于微信公众号.小程序.wap.pc等,实现会员管理.数据分析,精准营销的电子商务管理 ...
- Dynread微信商城源码(二开利器)
Dynread微信商城(开源),基于JooLun-wx二开优化,技术架构为 Java + SpringBoot + Maven + Swagger + Mybatis Plus + Redis + V ...
- JAVA 单商户商城系统 成熟源码 支持二开
三勾商城是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS + Android + 公众号 + H5 + 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开 ...
- 2023 在线截图生成工具多功能系统html源码 可二开
源码项目全部开源,支持电脑和手机端在线制作生成!该源码可直接上传虚拟空间解压缩即可访问,搭建操作简单方便!源码为html,可二开! 工具功能介绍: 在线一键制作各种截图生成,包含生成功能:微信对话.微 ...
- 王者赏金赛源码 可二开 原生开发
非常精品的高质量源码产品 支持百万人同时在线 可二开 也可以增加多种游戏 例如 和平精英赏金赛 英雄联盟 只要竞技游戏都可以添加 本套源码采用 springboot分布式架构 java+安卓+i ...
- 教育直播源码丨万岳教育直播平台源码丨源码支持二开
万岳教育平台满足大班课.小班课.1V1.录播.图文等多种教学场景 一.万岳教育直播平台源码更多实用教学工具 白板 互动式电子白板,可同步涂鸦,超越线下课堂的实时交互. 答题器 交互式抢答器,活跃课堂气 ...
最新文章
- python怎么把数据写入txt-如何将python中文件写入TXT
- Lecture 2 Asymptotic Notation
- 现在的年轻人,正在努力的改变着一些东西
- Cloud一分钟 | 微软Azure云服务宣布又一重磅应用落地;微软云计算转型迅猛,或助其市值短期达到1万亿美元...
- lombok常用注解使用说明
- 神州12号航天员确定:住110米“大平层” 有120种美食
- 【037】Excel 中遍历修改文件(VBA)
- 命令行工具恢复文件 foremost 和 extundelete 简介
- mediacodec配置h265解码
- qemu运行linux内核很慢,bugfix: Qemu 运行 ARM Linux 5.0 必现启动死机
- 基于433MHz无线网络和PMS132B SOP14照明驱动方案开发
- 游戏模型与动漫之间,有多大差距?
- nginx反向代理实现指定接口访问指定机器
- Matlab画三维立体网状图形(类似魔方)
- 培训班出来,碰到查学历,哎宝宝苦。
- 电脑计算机硬盘怎么新建,电脑如何新建一个本地磁盘
- 阿里云 1H2G T5实例 与 腾讯云 1H2G 标准2实例 测试对比
- 水库大坝安全检测平台实例分析+辽阳市水库大坝安全检测平台+志豪未来科技有限公司+陈志豪
- 在程序大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
- 58显示服务器异常怎么回事,手机登录云服务器异常
热门文章
- Origin绘制多折线图
- python mpi4py 读取json_Python:使用mpi4py通过spawn将数组bcast到其他脚本
- 人类首个基因编辑婴儿项目,历史伦理最终会站在哪一边?
- 网络通信服务器小型框架
- mysql中的擎天柱---InnoDB引擎
- matlab多项式多个值代入求值,[转载]Matlab 解惑之——多项式运算
- 锂电池正常分容测试温度的软件,实现节能环保,锂电池化成分容测试方案不可少...
- 【正点原子Linux连载】第三十一章 U-Boot顶层Makefile详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- VINS-Mono详解(一)
- Gazebo仿真记录 Turtlebot3 + D435i