通过Gradle

时间:2017-06-22 22:34:40

标签: hibernate gradle spring-data spring-data-jpa gradle-plugin

我使用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

3 个答案:

答案 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应用程序时将数据库凭据作为系统属性传递。