将存储在本地存储在 gradle 中的 .properties 文件中的值添加到 war 文件到 yml 文件
Adding values into war file to yml file from values stored in a .properties file that are stored locally in gradle
我试图在 gradle 的帮助下初始化我的数据源,但是 gradle 没有将值放入我的 yml
中,它存储在我机器上的 .properties 中,即~/.gradle
然后我在该位置创建了一个 .properties 文件。
在 Gradle 中,我创建了一个从 .properties 文件中获取值的方法,如下所示:
task copyDBConfig(type: Copy) {
from 'src/main/resources'
include 'app.yml'
into 'build/resources/main'
expand([
DB_URI: project.findProperty("dbURI") ?: "",
DB_USERNAME: project.findProperty("dbUsername") ?: "",
DB_PASSWORD: project.findProperty("dbPassword") ?: "",
])
}
war.finalizedBy(copyDBConfig)
然后在我的 yml
文件中我有:
spring:
datasource:
url: ${DB_URI}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
driverClassName: oracle.jdbc.OracleDriver
然而,当我构建 war 文件并查看 app.yml
文件时,正确的值不存在,只有 ${DB_URI}
等,而不是它应该从我的文件中获取的字符串.properties 文件并输入到我的 app.yml
文件中。
当我 运行 应用程序时,出现以下错误:
java.sql.SQLException: Driver:oracle.jdbc.OracleDriver@af2025f returned null for URL:${DB_URI}
注意: 在 build/resources/main/app.yml
下,我的 app.properties
文件中的值在那里,只是不在 war 文件中。
在您的设置中,您指示 Gradle 在 之后 您的 war
任务是 运行 它应该总是 运行 copyDBConfig
任务,为时已晚,因为 war 已经构建。无论如何,为此制定自己的任务不是可行的方法。而是像这样配置 processResources
任务:
processResources {
filesMatching('app.yml') {
expand DB_URI: project.findProperty("dbURI") ?: "",
DB_USERNAME: project.findProperty("dbUsername") ?: "",
DB_PASSWORD: project.findProperty("dbPassword") ?: ""
}
}
我试图在 gradle 的帮助下初始化我的数据源,但是 gradle 没有将值放入我的 yml
中,它存储在我机器上的 .properties 中,即~/.gradle
然后我在该位置创建了一个 .properties 文件。
在 Gradle 中,我创建了一个从 .properties 文件中获取值的方法,如下所示:
task copyDBConfig(type: Copy) {
from 'src/main/resources'
include 'app.yml'
into 'build/resources/main'
expand([
DB_URI: project.findProperty("dbURI") ?: "",
DB_USERNAME: project.findProperty("dbUsername") ?: "",
DB_PASSWORD: project.findProperty("dbPassword") ?: "",
])
}
war.finalizedBy(copyDBConfig)
然后在我的 yml
文件中我有:
spring:
datasource:
url: ${DB_URI}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
driverClassName: oracle.jdbc.OracleDriver
然而,当我构建 war 文件并查看 app.yml
文件时,正确的值不存在,只有 ${DB_URI}
等,而不是它应该从我的文件中获取的字符串.properties 文件并输入到我的 app.yml
文件中。
当我 运行 应用程序时,出现以下错误:
java.sql.SQLException: Driver:oracle.jdbc.OracleDriver@af2025f returned null for URL:${DB_URI}
注意: 在 build/resources/main/app.yml
下,我的 app.properties
文件中的值在那里,只是不在 war 文件中。
在您的设置中,您指示 Gradle 在 之后 您的 war
任务是 运行 它应该总是 运行 copyDBConfig
任务,为时已晚,因为 war 已经构建。无论如何,为此制定自己的任务不是可行的方法。而是像这样配置 processResources
任务:
processResources {
filesMatching('app.yml') {
expand DB_URI: project.findProperty("dbURI") ?: "",
DB_USERNAME: project.findProperty("dbUsername") ?: "",
DB_PASSWORD: project.findProperty("dbPassword") ?: ""
}
}