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

我当前的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")
}

几个问题:
  • systemProperty是spring boot bootRun配置的一部分吗?
  • 是否可以在其他任务中设置系统属性?
  • 我的下一步应该是什么?我需要先进行bootRunDev配置,然后再进行bootRun
  • 还有另一种方法我应该研究

  • -埃里克

    最佳答案

    最简单的方法是定义默认值并允许其被覆盖。我不确定在这种情况下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
    

    07-25 22:21