Gradle 从文件加载属性并在 liquibase 任务中使用它
Gradle load properties from file and use it in liquibase task
我正在尝试加载属性并在 liquibase 任务中使用它。我能够加载属性并能够打印出来。但是当我在 liquibase 任务中使用它时,gradle 抱怨找不到属性。
我正在使用:
classpath 'org.liquibase:liquibase-gradle-plugin:1.1.0'
正在加载属性:
def springApplicationProperties = "src/main/resources/application-${System.env.SPRING_PROFILES_ACTIVE}.properties"
def springProps = new Properties()
InputStream is = new FileInputStream("${springApplicationProperties}")
springProps.load(is)
println "${springProps['spring.datasource.url']}"
液碱块:
liquibase{
activities {
main {
changeLogFile 'src/main/database/changelog.groovy'
url ${springProps['spring.datasource.url']}
username ${springProps['spring.datasource.user']}
password ${springProps['spring.datasource.password']}
}
}
runList = 'main'
}
我得到
No such property: $springProps for class:
org.liquibase.gradle.Activity
liquibase 中似乎看不到 springProps activity。我尝试使用 ext 和项目范围,两者在 liquibase 块中都不可见。
它将以这种方式工作:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.liquibase:liquibase-gradle-plugin:1.1.0'
}
}
apply plugin: 'java'
apply plugin: 'org.liquibase.gradle'
ext.springProps = new Properties()
InputStream is = new FileInputStream("src/main/resources/lol.properties")
springProps.load(is)
liquibase {
activities {
main {
url springProps['spring.datasource.url']
username springProps['spring.datasource.user']
password springProps['spring.datasource.password']
}
}
runList = 'main'
}
您添加了不必要的 ${}
。我在自己尝试时稍微更改了脚本 - 但它没有副作用。
我正在尝试加载属性并在 liquibase 任务中使用它。我能够加载属性并能够打印出来。但是当我在 liquibase 任务中使用它时,gradle 抱怨找不到属性。
我正在使用:
classpath 'org.liquibase:liquibase-gradle-plugin:1.1.0'
正在加载属性:
def springApplicationProperties = "src/main/resources/application-${System.env.SPRING_PROFILES_ACTIVE}.properties"
def springProps = new Properties()
InputStream is = new FileInputStream("${springApplicationProperties}")
springProps.load(is)
println "${springProps['spring.datasource.url']}"
液碱块:
liquibase{
activities {
main {
changeLogFile 'src/main/database/changelog.groovy'
url ${springProps['spring.datasource.url']}
username ${springProps['spring.datasource.user']}
password ${springProps['spring.datasource.password']}
}
}
runList = 'main'
}
我得到
No such property: $springProps for class: org.liquibase.gradle.Activity
liquibase 中似乎看不到 springProps activity。我尝试使用 ext 和项目范围,两者在 liquibase 块中都不可见。
它将以这种方式工作:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.liquibase:liquibase-gradle-plugin:1.1.0'
}
}
apply plugin: 'java'
apply plugin: 'org.liquibase.gradle'
ext.springProps = new Properties()
InputStream is = new FileInputStream("src/main/resources/lol.properties")
springProps.load(is)
liquibase {
activities {
main {
url springProps['spring.datasource.url']
username springProps['spring.datasource.user']
password springProps['spring.datasource.password']
}
}
runList = 'main'
}
您添加了不必要的 ${}
。我在自己尝试时稍微更改了脚本 - 但它没有副作用。