我有一个spring Boot 应用程序,我想从gradle.properties中插入一个变量到我的application.yaml文件中我在gradle.properties中有这个文件
version=2521.2442
我想把这个变量存储在我的application.yaml文件中作为spring安全密码
spring:
security :
user:
name: admin
password : admin${version}
但当我启动我的应用程序和打印值的密码我有这个错误
**原因:java.lang.IllegalArgumentException:无法解析值“admin${version}"中的占位符”version“**我的代码如下所示
@EnableSwagger2
@EnableAsync
@EnableScheduling
@EnableJpaRepositories
@SpringBootApplication(scanBasePackages = {"com.wombatscorp.confluence.usermacro"})
@ConfigurationPropertiesScan("com.wombatscorp.confluence.usermacro")
public class AddonApplication {
@Value("${spring.security.user.password}")
private String password;
public static void main(String[] args) throws Exception {
new SpringApplication(AddonApplication.class).run(args);
}
@PostConstruct
private void password() {
System.out.println("Password : " + password);
}
}
因此,我的问题是如何使其工作,并在application.yaml文件中使用gradle.properties中的version变量
1条答案
按热度按时间0dxa2lsx1#
这里的关键是
gradle.properties
中定义的属性没有转换成spring-boot可以通过外部配置找到属性的形式(环境变量就是这样一种形式)。要演示这一点,请给定您提供的
gradle.properties
文件和以下Gradle任务:但是,您可以转换
gradle.properties
中提供的属性,并将它们作为环境变量提供给运行spring-boot应用程序的Java进程,如下所示:我还应该指出,如果您的
build.gradle.kts
还指定了version
,则将属性命名为version
可能会有点问题。例如,start.spring.io生成的默认Gradle构建:将采用上面指定的版本(
0.0.1-SNAPSHOT
),而不是gradle.properties
中指定的版本