Liquibase Maven插件无法读取Spring外部属性配置,报错求助
问题原因与解决方案
核心问题是Maven的liquibase插件运行在构建阶段,不会触发Spring Boot的@PropertySource属性加载逻辑,你在liquibase.properties里的占位符根本没被替换,插件直接把${liquibase.database.driverClassName}当成了驱动类名,自然找不到对应驱动。
以下是具体解决步骤:
1. 让Maven加载internal.properties的属性
添加properties-maven-plugin,在构建初始化阶段加载你的internal.properties文件,把里面的属性注入到Maven属性上下文,这样liquibase插件就能解析占位符了。
在pom.xml中加入:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.1.0</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>load-properties</goal> </goals> <configuration> <files> <file>D:\Project\conf_files\internal.properties</file> </files> </configuration> </execution> </executions> </plugin>
2. 确保占位符与属性键匹配
检查liquibase.properties里的占位符是否和internal.properties中的键完全一致:
- 示例internal.properties配置:
liquibase.database.driverClassName=com.mysql.cj.jdbc.Driver - 对应的liquibase.properties配置:
driver: ${liquibase.database.driverClassName}
3. 给liquibase插件单独配置驱动依赖
即使Spring Boot项目中已添加驱动依赖,Maven插件可能无法直接获取到,需要单独给插件配置驱动依赖:
<plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <version>4.24.0</version> <configuration> <propertyFile>D:\Project\conf_files\liquibase.properties</propertyFile> <propertyFileWillOverride>true</propertyFileWillOverride> </configuration> <dependencies> <!-- 替换为你实际使用的数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> </dependencies> </plugin>
验证
直接运行mvn liquibase:updateSQL或mvn liquibase:update即可,因为initialize阶段会自动执行,属性会被提前加载。
内容的提问来源于stack exchange,提问作者Z4N4TI
相关产品推荐
相关产品推荐

