Gradle 태스크에 시스템 속성을 전달하는 방법
Gradle을 사용하고 있습니다.spring-boot플러그인 및 테스트 실행을 위한 스프링 활성 프로파일을 선택해야 합니다.
어떻게 패스하지?spring.profiles.active시스템 속성bootRun플러그인 작업?
이미 실패한 항목:
task bootRunLocal {
systemProperty "spring.profiles.active", "local"
System.setProperty("spring.profiles.active", "local")
tasks.bootRun.execute() // I suspect that this task is executed in a separate JVM
}
일부 명령줄 매직도 실패합니다.
./gradle -Dspring.profiles.active=local bootRun
누가 제 고민을 해결해 주실 수 있나요?
답변 및 의견 업데이트:
systemProperty를 설정하여 스프링 컨테이너에 전달할 수 있습니다.
run {
systemProperty "spring.profiles.active", "local"
}
단, 이렇게 하면 로컬프로파일이 양쪽 모두로 설정됩니다.bootRun작업 및bootRunLocal작업입니다. 이 속성을 설정하는 방법이 필요합니다.bootRunLocal작업 및 호출booRun로부터의 과제.bootRunLocal.
아주 단순하게 들릴지 모르지만, 저는 구조화된 메이븐의 세계로부터 평화를 얻습니다.
늦은 거 알아하지만 최근에 이 문제에 직면했어요.명령줄에서 spring.profiles.active 및 spring.config.location을 시스템 속성으로 설정하고 bootRun을 실행하려고 했습니다.
따라서 명령줄을 "매직"으로 작동시키려면 이를 빌드에 추가하십시오.gradle
bootRun {
systemProperties System.properties
}
명령줄에서 실행 중...
gradle -Dspring.profiles.active=local bootRun
단순히 env 변수를 추가하기 위해 별도의 작업을 정의할 필요 없이 로컬을 액티브프로파일로 설정합니다.
task local {
run { systemProperty "spring.profiles.active", "local" }
}
bootRun.mustRunAfter local
그런 다음 gradle 명령을 다음과 같이 실행합니다.
gradle bootRun local
시스템 속성을 태스크에 전달하는 일반적인 방법은 없습니다.한마디로 별도의 JVM을 분기하는 태스크에서만 지원됩니다.
그bootRunLocal태스크(위에서 정의한 대로)는 별도의 JVM에서 실행되지 않으며, 콜은execute()태스크는 지원되지 않습니다(어떤 경우에도 실행 단계에서 수행해야 합니다).반면 테스트는 항상 별도의 JVM에서 실행됩니다(에 의해 실행되는 경우).Testtask) 테스트 실행을 위한 시스템 속성을 설정하려면 , 대응하는 설정을 실시할 필요가 있습니다.Test작업을 수행합니다.예를 들어 다음과 같습니다.
test {
systemProperty "spring.profiles.active", "local"
}
상세한 것에 대하여는, 을 참조해 주세요.Test그래들 빌드 언어 참조에 있습니다.
SPRING_PROFILES_ACTIVE=local gradle clean bootRun
spring-boot-gradle-plugin 문서에 따르면 다음과 같은 인수를 전달할 수 있어야 합니다.
./gradlew bootRun --args='--spring.profiles.active=dev'
이것은 4.9 이후 새로운 그라들 기능인 것 같습니다.제 프로젝트에 사용했는데 바로 작동했어요.
그래들 2.14의 경우 아래 예제가 작동합니다.아래와 같이 추가했습니다.
[시스템(System)]의 경우properties['spring.spring.disc.active']가 null이면 기본 프로파일이 설정됩니다.
bootRun {
systemProperty 'spring.profiles.active', System.properties['spring.profiles.active']
}
명령줄 예시
gradle bootRun -Dspring.profiles.active=dev
이 문제가 발생할 경우 참고하시기 바랍니다.
Vlad의 답변은 별로 효과가 없었지만, 이 답변은 2.4와 잘 맞아떨어집니다.
task local <<{
bootRun { systemProperty "spring.profiles.active", "local" }
}
local.finalizedBy bootRun
gradle local
여기서 OP의 정확한 요청에 응답하는 중...
spring.profiles.active 시스템 속성을 bootRun 플러그인의 작업으로 전달하려면 어떻게 해야 합니까?
또한 OP가 "pass"라고 하면 "commandline에서 통과" 또는 "IDE 호출에서 통과"를 의미한다고 가정합니다.이게 내가 좋아하는 방법이야.
build.gradle에 추가합니다.
/**
* Task from spring-boot-gradle-plugin, configured for easier development
*/
bootRun {
/* Lets you pick Spring Boot profile by system properties, e.g. gradle bootRun -Dspring.profiles.active=dev */
systemProperties = System.properties
}
그런 다음 호출할 때 익숙한 Java 플래그를 사용하여 시스템 속성을 설정합니다.
gradle bootRun -Dspring.profiles.active=local
옵션환경변수 옵션)에 비해 하는 주요 .SPRING_PROFILES_ACTIVE=local gradle bootRunLinux/OS X ( Bash ) Windows ( cmd . exe ) linux linux linux 。
(업데이트: 아, 왠지 같은 추천으로 @Erich의 답변을 놓치고 있었습니다.앗! 휴대성에 대한 추가 세부사항 등이 있어서 답변을 남깁니다.)
할 수 논의된 ).bootRunLocal 더 길어집니다.org.springframework.boot.gradle.run.BootRunTask및 설정 속성을 작업 실행 전에 확인하십시오.이러한 태스크는 다음 코드를 사용하여 생성할 수 있습니다.
task bootRunLocal(type: org.springframework.boot.gradle.run.BootRunTask) {
doFirst() {
main = project.mainClassName
classpath = sourceSets.main.runtimeClasspath
systemProperty "spring.profiles.active", "local"
}
}
상세한 것에 대하여는, https://karolkalinski.github.io/gradle-task-that-runs-spring-boot-aplication-with-profile-activated/ 를 참조해 주세요.
.0 Spring Boot 2.0.0-M5 setSystemProperties()boot Run을 실행합니다.을 build.gradle로 .
bootRun {
execSpec {
// System.properties["spring.profiles.active"]
systemProperties System.properties
}
}
은 springBoot의가 "springBoot"을 사용하기 때문입니다.org.gradle.process.JavaExecSpec
Gradle 4.2를 사용하면 됩니다.
이 방법은 다음과 같습니다.
SPRING_PROFILES_ACTIVE=production ./gradlew app-service:bootRun
할 수 .run { systemProperties = System.properties }들 그래들 그래들 그래들 들 그래들 그래들 그래들 그래들 그래들 그래들run -Dspring.profiles.active=local
그래들 태스크의 지원이 필요 없는 또 다른 방법:JAVA_를 설정합니다.TOOL_OPTIONS 환경변수:
JAVA_TOOL_OPTIONS='-Dfoo=bar' gradle ...
또는 변수에 이미 유용한 내용이 포함되어 있는 경우:
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -Dfoo=bar" gradle ...
// defualt value
def profiles = 'dev'
bootRun {
args = ["--spring.profiles.active=" + profiles]
}
그래들 작업을 시작할 때 특정 버전을 선택할 수 있습니다.
./gradlew bootRun -P dev
"dev"는 "dev"로 진행됩니다.
언급URL : https://stackoverflow.com/questions/23367507/how-to-pass-system-property-to-gradle-task
'source' 카테고리의 다른 글
| 개체를 파괴하고 결과 중 하나를 무시하는 중 (0) | 2023.03.16 |
|---|---|
| --disable-web-security는 Chrome에서 동작하게 되었습니까? (0) | 2023.03.16 |
| 프로젝터/셀레늄 "could found chromedriver at" (Windows에서) (0) | 2023.03.16 |
| 왜 파이썬의 yaml 시리얼라이제이션보다 json 시리얼라이제이션이 훨씬 빠를까요? (0) | 2023.03.16 |
| 치명적인 오류:WP에 게시물을 추가할 때 메모리 부족 (0) | 2023.03.16 |