使用Jasypt加密Spring Boot配置遇错:指定application.yml失败
解决Jasypt加密Spring Boot application.yml的问题
问题根源
- 初始错误:Jasypt Maven插件默认读取
application.properties,但你的项目仅使用application.yml,导致文件找不到报错。 - 二次错误:命令中参数的转义引号导致Maven解析异常,误将
.plugin.path识别为插件前缀,引发插件找不到的错误。
解决方案
方案1:修正命令参数格式(Windows环境适配)
Windows下执行Maven命令时,无需对引号转义,直接使用以下命令即可:
mvn jasypt:encrypt -Djasypt.plugin.path=file:src/main/resources/application.yml -Djasypt.encryptor.password=你的加密密码
或保留引号但不转义:
mvn jasypt:encrypt -Djasypt.plugin.path="file:src/main/resources/application.yml" -Djasypt.encryptor.password="你的加密密码"
方案2:在pom.xml中配置插件默认路径
如果不想每次命令都指定文件路径,可在pom.xml的Jasypt插件配置中直接指定yml文件路径:
<build> <plugins> <plugin> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-maven-plugin</artifactId> <version>3.0.5</version> <configuration> <path>src/main/resources/application.yml</path> <!-- 可选:如需自定义加密算法,可添加如下配置 --> <!-- <encryptorAlgorithm>PBEWithMD5AndDES</encryptorAlgorithm> --> </configuration> </plugin> </plugins> </build>
配置完成后,直接执行简化命令:
mvn jasypt:encrypt -Djasypt.encryptor.password=你的加密密码
补充说明
- 确保application.yml中的明文使用插件要求的
DEC(明文)格式,加密后会自动替换为ENC(密文)格式。 - 项目启动时,需通过
-Djasypt.encryptor.password=你的加密密码参数(或环境变量等方式)传入解密密钥,才能正常读取加密配置。
内容的提问来源于stack exchange,提问作者xRay
相关产品推荐
相关产品推荐

