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即可解決。