我使用gradle credentials plugin将用户和密码数据库传递给liquibase plugin。另外,我使用spring数据库和hibernate用于数据层,我想传递liquibase插件的相同配置。有一种方法可以通过gradle传递凭据(我不想创建application.properties文件,因为凭据已存储在凭证插件中)?
我使用以下代码将凭据传递给liquibase:
def changelog = "$projectDir/src/main/resources/db_version/changelog-master.xml"
def urlDatabase = ...
def schema = ...
liquibase {
activities{
main {
changeLogFile changelog
url urlDatabase
username credentials.devUsr
password credentials.devPass
defaultSchemaName schema
}
}
}
我想做类似的事情:
datasource{
username credentials.devUsr
password credentials.devPass
}
或者写下这些专长:
spring.datasource.username credentials.devUsr
spring.datasource.password credentials.devPass
答案 0 :(得分:0)
如果您使用Spring Boot自动接受环境变量,则可以通过此机制传递db凭据。这是相应的documentation
如果您没有Spring Boot,您仍然可以通过环境传递变量,但是您需要在应用程序中实现接受。这是comprehensive overview
这是关于passing env variables in Gradle的答案。
答案 1 :(得分:0)
Spring提供了各种方法来使用配置中的属性以及提供它们的方法,包括将它们作为命令行参数或系统属性传递。有关详细信息,请参阅https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html。
使用Spring配置中的设置,您只需要指示Gradle将插件中的值作为命令行参数或系统属性传递。
这描述了使用Gradle设置系统属性的方法:https://discuss.gradle.org/t/how-to-set-a-system-property-before-calling-task-in-gradle/6060/4
这里似乎涵盖了传递命令行参数:Gradle task - pass arguments to Java application
答案 2 :(得分:0)
你是对的@Jens Schauder和@webdizz,但这里是例子:
bootRun{
systemProperty "spring.datasource.username", credentials.devUsr
systemProperty "spring.datasource.password", credentials.devPass
}
使用此代码,我在启动spring boot应用程序时将数据库凭据作为系统属性传递。