Eri*_*cis 37 java spring gradle
我正在尝试设置gradle来启动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']
}
}
Run Code Online (Sandbox Code Playgroud)
我想用gradle任务设置系统属性,然后执行bootRun.
我的尝试看起来像这样:
task bootRunDev
bootRunDev {
System.setProperty("spring.profiles.active", "Dev")
}
Run Code Online (Sandbox Code Playgroud)
几个问题:
systemPropertyspring boot bootRun配置的一部分?bootRunDev配置发生之前bootRun-Eric
Vae*_*lyr 37
最简单的方法是定义默认值并允许它被覆盖.我不确定在这种情况下systemProperty的用途是什么.简单的论据可以完成这项工作.
def profiles = 'prod'
bootRun {
args = ["--spring.profiles.active=" + profiles]
}
Run Code Online (Sandbox Code Playgroud)
要运行dev:
./gradlew bootRun -Pdev
Run Code Online (Sandbox Code Playgroud)
要在任务中添加依赖项,您可以执行以下操作:
task setDevProperties(dependsOn: bootRun) << {
doFirst {
System.setProperty('spring.profiles.active', profiles)
}
}
Run Code Online (Sandbox Code Playgroud)
在Gradle中有很多方法可以实现这一目标.
编辑:
为每个环境配置单独的配置文件
if (project.hasProperty('prod')) {
apply from: 'gradle/profile_prod.gradle'
} else {
apply from: 'gradle/profile_dev.gradle'
}
Run Code Online (Sandbox Code Playgroud)
每个配置都可以覆盖任务,例如:
def profiles = 'prod'
bootRun {
systemProperty "spring.profiles.active", activeProfile
}
Run Code Online (Sandbox Code Playgroud)
prod在这种情况下通过提供标志运行就像这样:
./gradlew <task> -Pprod
Run Code Online (Sandbox Code Playgroud)
小智 36
环境变量可用于设置弹簧属性,如文档中所述.因此,要设置活动配置文件(spring.profiles.active),您可以在Unix系统上使用以下代码:
SPRING_PROFILES_ACTIVE=test gradle clean bootRun
Run Code Online (Sandbox Code Playgroud)
在Windows上你可以使用:
SET SPRING_PROFILES_ACTIVE=test
gradle clean bootRun
Run Code Online (Sandbox Code Playgroud)
Raf*_*ael 12
使用这个 shell 命令它将工作:
SPRING_PROFILES_ACTIVE=test gradle clean bootRun
Run Code Online (Sandbox Code Playgroud)
可悲的是,这是我找到的最简单的方法。它为该调用设置环境属性,然后运行该应用程序。
Pat*_*non 11
对于 Gradle 7.5 和 Spring Boot 2.7.3 的命令行,我这样做(如果它对任何人有帮助的话):
gradle bootRun --args=--spring.profiles.active=myprofile
Run Code Online (Sandbox Code Playgroud)
dea*_*mon 10
Kotlin版本:在文件中定义以下任务build.gradle.kts:
tasks.named<org.springframework.boot.gradle.tasks.run.BootRun>("bootRun") {
args("--spring.profiles.active=dev")
}
Run Code Online (Sandbox Code Playgroud)
这会将参数传递给--spring.profiles.active=dev,在本例中bootRun为配置文件名称dev。
每次运行时都会使用gradle bootRun该配置文件。dev
对于那些使用Spring Boot 2.0+的人,您可以使用以下内容设置一个任务,该任务将使用给定的一组配置文件运行应用程序.
task bootRunDev(type: org.springframework.boot.gradle.tasks.run.BootRun, dependsOn: 'build') {
group = 'Application'
doFirst() {
main = bootJar.mainClassName
classpath = sourceSets.main.runtimeClasspath
systemProperty 'spring.profiles.active', 'dev'
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您只需./gradlew bootRunDev从IDE 运行或类似.
对于任何想在 Kotlin DSL 中执行此操作的人,这里有一个工作示例build.gradle.kts:
tasks.register("bootRunDev") {
group = "application"
description = "Runs this project as a Spring Boot application with the dev profile"
doFirst {
tasks.bootRun.configure {
systemProperty("spring.profiles.active", "dev")
}
}
finalizedBy("bootRun")
}
Run Code Online (Sandbox Code Playgroud)
小智 8
在您的build.gradle文件中只需使用以下代码片段
bootRun {
args = ["--spring.profiles.active=${project.properties['profile'] ?: 'prod'}"]
}
Run Code Online (Sandbox Code Playgroud)
然后运行以下命令来使用dev配置文件:
./gradlew bootRun -Pprofile=dev
Run Code Online (Sandbox Code Playgroud)
小智 7
我希望它很简单,只是为了能够像您一样调用 gradle bootRunDev 而无需进行任何额外的输入。
这对我有用 - 首先在我的任务中配置 bootRun,然后在它运行 bootRun 之后立即运行,这对我来说效果很好:)
task bootRunDev {
bootRun.configure {
systemProperty "spring.profiles.active", 'Dev'
}
}
bootRunDev.finalizedBy bootRun
Run Code Online (Sandbox Code Playgroud)
Spring Boot v2 Gradle插件文档提供了一个答案:
6.1。将参数传递给您的应用程序
与所有JavaExec任务一样,
--args='<arguments>'在使用Gradle 4.9或更高版本时,可以从命令行将参数传递到bootRun中。
运行活动配置文件设置为dev的服务器:
$ ./gradlew bootRun --args='--spring.profiles.active=dev'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54914 次 |
| 最近记录: |