TaskInternal.execute迁移

时间:2018-01-25 13:45:26

标签: spring-boot gradle build.gradle

在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的类,但我不确定它是否是解决问题的更简单方法。

2 个答案:

答案 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中显示的doLastdoFirst将操作添加到任务中。

这也意味着任务正文中的所有内容都在配置时执行 - 因为它应该配置任务。

因此,loadDbConfigFromSpringProfile.execute()无效 - 任务被跳过,因为它没有任何操作。

答案 1 :(得分:0)