Spring Boot使用Gradle进行项目管理时,也会使用Filter来进行打包时参数替换,特别是对于resources文件夹下的内容。如下所示,为resources下的数据初始化data.sql:
INSERT INTO demo_system_info(version_code,version_id,update_time,description) VALUES('{{version}}','{{versionId}}',CURRENT_TIMESTAMP,'{{desc}}') ON DUPLICATE KEY UPDATE description=VALUES(description);
其对应gradle filter相关设置如下:
processResources {
filter(ReplaceTokens, tokens: [dbName : project.ext.db.name,
dbPwd : project.ext.db.password,
version : project.ext.version.code,
versionId: project.ext.version.id,
desc : project.ext.version.desc],
beginToken: '{{', endToken: '}}')
}
打包时,“{{}}”之间的内容会被相应的替换,但是直接使用idea运行Spring Boot时,却无法生效替换,个人猜想是因为运行编译时使用了idea自身编译方式而导致,经过一番查询之后,将idea项目编译替换为Gradle方式即可,具体设置如下:
"Build and run using"默认方式为Intellij IDEA,将其设置为Gradle即可解决。