当前位置: 首页 > 面试题库 >

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

计泉
2023-03-14
问题内容

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

  • 我试图设置gradle,在启用各种spring配置文件的情况下启动bootRun进程。 我当前的配置如下所示: 我想用gradle任务设置系统属性,然后执行bootRun。 我的尝试是这样的: 几个问题: 系统属性是spring boot bootRun配置的一部分吗 可以在另一个任务中设置系统属性吗 我的下一步应该是什么?我需要在bootRun之前进行配置 有没有其他方法值得我研究 -埃里克

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

  • 问题内容: 我想在gradle中定义一个任务(称为),该任务运行gradle任务,但具有的固定值。我也希望以后可以使用原始任务。 我的问题是,我无法转移清单的设置。 我累了 我以为我要通过对archiveName和manifest使用其他值来重新定义任务。 运行时会生成一个可执行的JAR文件。 运行时会生成一个jar文件。不幸的是,当尝试使用我运行程序时,出现错误消息: java -jar bui

  • 是否可以在gradle.properties文件中定义test.maxParallelForks=runtime.runtime.availableProcessors(),而不是在test任务下的每个build.gradle文件中定义它?

  • 问题内容: 我想通过gradle任务运行我的方法 这是我通过cmd运行的方式: 应该如何写成gradle? 更新资料 我努力了 我得到: 我得到一个错误: 但是当我通过Intellij运行时,每个thig都可以正常工作 问题答案: 最简单的方法可能是使用应用程序插件。添加到您的build.gradle并设置。要将参数添加到主类,请修改运行任务并编辑args属性 类路径是从主sourceSet中自动