2017-06-22 63 views
0

我使用gradle credentials plugin将用户和密码数据库传递给liquibase plugin。另外,我正在使用spring数据存储库和hibernate作为数据层,我想将它传递给liquibase插件的相同配置。有一种方法可以通过gradle传递凭证(我不想创建application.properties文件,因为凭证已经存储在凭证插件中)?通过Gradle传递数据库凭证

我用下面的代码传递凭据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

你是对的@Jens Schauder不和@webdizz,但这里是例子:

bootRun{ 
    systemProperty "spring.datasource.username", credentials.devUsr 
    systemProperty "spring.datasource.password", credentials.devPass 
} 

使用此代码我在启动弹簧引导应用程序时将数据库凭据作为系统属性传递。

0

如果您使用的是自动接受环境变量的Spring Boot,那么您可以通过此传递数据库证书机制。这里是相应的documentation

如果你没有Spring Boot,你仍然可以通过环境传递变量,但是你需要在应用程序中实现接受。这里的comprehensive overview

这里是关于passing env variables in Gradle的答案。

0

Spring提供了多种方式来使用配置中的属性以及提供它们的方式,包括将它们作为命令行参数或系统属性传递。详情请参阅https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

通过在Spring配置中设置,您只需指示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