在build.gradle中的spring boot应用程序
task loadDbConfigFromSpringProfile {
def activeProfileProperties = new Properties()
file("src/main/resources/application.properties").withInputStream {
activeProfileProperties.load(it)
}
def profileProperties = new Properties()
file("src/main/resources/application-" + activeProfileProperties.getProperty("spring.profiles.active") + ".properties").withInputStream {
profileProperties.load(it)
}
active_db_url = profileProperties.getProperty("spring.datasource.url")
}
loadDbConfigFromSpringProfile.execute()
当我用 gradle 4.4 运行应用程序时,我得到了
不推荐使用TaskInternal.execute()方法并进行安排 要在Gradle 5.0中删除。
我开始创建一个扩展DefaultTask的类,但我不确定它是否是解决问题的更简单方法。
答案 0 :(得分:0)
如果您取消对loadDbConfigFromSpringProfile.execute()
的通话,您的代码将具有相同的效果。
您甚至不需要任务定义,将以下内容放在您的构建文件中具有相同的效果:
def activeProfileProperties = new Properties()
file("src/main/resources/application.properties").withInputStream {
activeProfileProperties.load(it)
}
def profileProperties = new Properties()
file("src/main/resources/application-" + activeProfileProperties.getProperty("spring.profiles.active") + ".properties").withInputStream {
profileProperties.load(it)
}
active_db_url = profileProperties.getProperty("spring.datasource.url")
原因如下:您定义的任务没有任何操作。可以使用hello world example中显示的doLast
或doFirst
将操作添加到任务中。
这也意味着任务正文中的所有内容都在配置时执行 - 因为它应该配置任务。
因此,loadDbConfigFromSpringProfile.execute()
无效 - 任务被跳过,因为它没有任何操作。
答案 1 :(得分:0)
您可以替换为finalizedBy()
https://discuss.gradle.org/t/how-to-call-task-execution-from-outside-task/25971