2017-06-22 163 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