如何通过gradle任务使用spring profile运行bootRun

我正在尝试设置gradle以bootRun启用各种spring配置文件来启动该过程。

我当前的bootRun配置如下:

bootRun {

// pass command line options from gradle to bootRun

// usage: gradlew bootRun "-Dspring.profiles.active=local,protractor"

if (System.properties.containsKey('spring.profiles.active')) {

systemProperty "spring.profiles.active", System.properties['spring.profiles.active']

}

}

我想通过gradle任务设置系统属性,然后执行bootRun

我的尝试看起来像这样:

task bootRunDev

bootRunDev {

System.setProperty("spring.profiles.active", "Dev")

}

几个问题:

  1. systemPropertyspring boot bootRun配置的一部分?
  2. 是否可以在另一个任务中设置系统属性?
  3. 我下一步应该做什么?我需要先进行bootRunDev配置bootRun
  4. 我还有其他方法可以研究吗

-埃里克

回答:

最简单的方法是定义默认值并允许其被覆盖。我不确定在这种情况下systemProperty的用途是什么。简单的论据就可以了。

def profiles = 'prod'

bootRun {

args = ["--spring.profiles.active=" + profiles]

}

运行dev:

./gradlew bootRun -Pdev

要添加对任务的依赖关系,可以执行以下操作:

task setDevProperties(dependsOn: bootRun) << {

doFirst {

System.setProperty('spring.profiles.active', profiles)

}

}

有许多方法可以在Gradle中实现这一目标。

编辑:

为每个环境配置单独的配置文件。

if (project.hasProperty('prod')) {

apply from: 'gradle/profile_prod.gradle'

} else {

apply from: 'gradle/profile_dev.gradle'

}

每种配置都可以覆盖任务,例如:

def profiles = 'prod'

bootRun {

systemProperty "spring.profiles.active", activeProfile

}

prod在这种情况下,通过提供标志来运行,如下所示:

./gradlew <task> -Pprod

以上是 如何通过gradle任务使用spring profile运行bootRun 的全部内容, 来源链接: utcz.com/qa/429096.html

回到顶部