我想bootRun使用 Gradle 在 Spring Boot 應用程式中定義兩個不同版本的任務。這是我的嘗試,它適用于自定義單個bootRun任務。但是對于包含bootRun的多個任務,最后一個任務bootRun會覆寫之前的任務。
task local {
bootRun {
systemProperty "spring.profiles.active", "dev,postgres"
jvmArgs "--add-opens=java.base/java.util=ALL-UNNAMED", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
}
}
local.finalizedBy bootRun
task prod {
bootRun {
systemProperty "spring.profiles.active", "postgres"
jvmArgs "--add-opens=java.base/java.util=ALL-UNNAMED"
}
}
prod.finalizedBy bootRun
在這里,當我跑步時./gradlew :local,彈簧輪廓只有postgres. 當我注釋掉prod任務時,我得到了dev,postgres預期的結果。
uj5u.com熱心網友回復:
如目前所寫,您的local和prod任務是默認任務,實際上并沒有做任何事情。您bootRun在他們的配置中使用正在更改bootRunSpring Boot 的 Gradle 插件定義的現有任務的配置。
當你定義任務時,你需要告訴 Gradle 它們是一個BootRun任務:
task local(type: org.springframework.boot.gradle.tasks.run.BootRun) {
// …
}
您還需要配置新任務的主類名和類路徑。您可能希望這些與默認bootRun任務相同:
task local(type: org.springframework.boot.gradle.tasks.run.BootRun) {
mainClass = bootRun.mainClass
classpath = bootRun.classpath
}
然后,您可以像以前一樣自定義系統屬性和 JVM 引數。將所有這些放在一起,您可以像這樣配置您的local和prod任務:
task local(type: org.springframework.boot.gradle.tasks.run.BootRun) {
mainClass = bootRun.mainClass
classpath = bootRun.classpath
systemProperty "spring.profiles.active", "dev,postgres"
jvmArgs "--add-opens=java.base/java.util=ALL-UNNAMED", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
}
task prod(type: org.springframework.boot.gradle.tasks.run.BootRun) {
mainClass = bootRun.mainClass
classpath = bootRun.classpath
systemProperty "spring.profiles.active", "postgres"
jvmArgs "--add-opens=java.base/java.util=ALL-UNNAMED"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526946.html
