当前位置: 首页 > 知识库问答 >
问题:

如何通过gradle任务使用spring配置文件运行bootRun

百里默
2023-03-14

我试图设置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")
}

几个问题:

  1. 系统属性是spring boot bootRun配置的一部分吗
  2. 可以在另一个任务中设置系统属性吗
  3. 我的下一步应该是什么?我需要在bootRun之前进行配置
  4. 有没有其他方法值得我研究

-埃里克

共有3个答案

卫高明
2023-03-14

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

def profiles = 'prod'

bootRun {
  args = ["--spring.profiles.active=" + profiles]
}

要运行开发:

./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
房唯
2023-03-14

环境变量可用于设置Spring属性,如留档中所述。因此,要设置活动配置文件(spring.profiles.active),您可以在Unix系统上使用以下代码:

SPRING_PROFILES_ACTIVE=test gradle clean bootRun

在Windows上,您可以使用:

SET SPRING_PROFILES_ACTIVE=test
gradle clean bootRun
慕通
2023-03-14

Spring Boot v2 Gradle插件文档提供了答案:

6.1向应用程序传递参数

与所有JavaExec任务一样,参数可以使用--args='从命令行传递到bootRun

要在活动配置文件设置为dev的情况下运行服务器,请执行以下操作:

$ ./gradlew bootRun --args='--spring.profiles.active=dev'

 类似资料:
  • 问题内容: 我正在尝试设置gradle以启用各种spring配置文件来启动该过程。 我当前的配置如下: 我想通过任务设置系统属性,然后执行。 我的尝试看起来像这样: 几个问题: 是spring boot bootRun配置的一部分? 是否可以在另一个任务中设置系统属性? 我下一步应该做什么?我需要先进行配置 我还有其他方法可以研究吗 -埃里克 问题答案: 最简单的方法是定义默认值并允许其被覆盖。我

  • 我正在尝试将Gradle插件中的一些任务配置从Groovy转换为Kotlin。我发现的所有示例都是关于普通构建脚本的,这种方法似乎并没有直接转化为插件的使用。我的尝试如下: 产生以下错误: 类型不匹配:推断类型是()- 做这件事的正确方法是什么?

  • 我想从我的Gradle脚本运行JMeter GUI,这样我就可以仔细控制版本和环境因素,这样我的本地开发人员机器构建1就没有必要的设置了。 我的JMeter的构建。gradle(多项目构建的一部分): 1目前,在我的构建中,所有内容都受到严格的版本控制,是Gradle构建的一部分。这包括NodeJS、NPM和Terraform。从字面上看,唯一的设置先决条件是Java8 JDK。我想用JMeter

  • 我正在尝试从maven学习将gradle与springboot一起使用,所以我想知道如何在命令行中运行我的项目以获取不同的配置文件。这里的场景是我有我的属性,例如。 application-qa.properties 和 application.properties 然而,如果用< code >运行gradle。/gradlew -PspringProfile=qa启动 它只加载applicati

  • 每当我通过命令行和mvn包运行应用程序时,IntelliJ 2016.1.2中都有一个小型Spring boot应用程序版本1.3.3 我记得我前段时间搜索过这个问题,它是IDE中一个已知的错误,也出现在Eclipse中。但是我找不到这些帖子了,因此无法访问解决方案。 你们谁能帮忙吗? 提前感谢。问候

  • 我在build.gradle中创建了一个新的gradle任务: 哪个应该运行rerun.sh: 我使用IntelliJ作为IDE。如何运行此任务? 我尝试在zshell控制台中运行并收到此错误: gradle调用CL zsh:找不到命令:gradle 但是在 IDE 中,我一直使用 gradle,因此必须安装它。 我怎么才能解决这个问题?我的写作还好吗?