[SPRING] 시스템 속성을 Gradle 작업에 전달하는 방법
SPRING시스템 속성을 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 작업에 대한이 속성을 설정하고 bootRunLocal에서 booRun 작업을 호출하는 방법이 필요합니다.
이것은 매우 간단하게 들릴지 모르겠지만, 나는 Maven의 구조화 된 세계로부터 평화롭게 왔습니다.
해결법
-
==============================
1.
task local { run { systemProperty "spring.profiles.active", "local" } } bootRun.mustRunAfter local
그런 다음 gradle 명령을 다음과 같이 실행하십시오.
gradle bootRun local
-
==============================
2.나는 내가 늦었다는 것을 알고있다. 그러나 나는 최근에이 정확한 문제에 직면했다. 명령 줄에서 spring.profiles.active 및 spring.config.location을 시스템 등록 정보로 설정하여 bootRun을 시작하려고했습니다.
나는 내가 늦었다는 것을 알고있다. 그러나 나는 최근에이 정확한 문제에 직면했다. 명령 줄에서 spring.profiles.active 및 spring.config.location을 시스템 등록 정보로 설정하여 bootRun을 시작하려고했습니다.
따라서 명령 행 "마법"을 작동 시키려면 build.gradle에 이것을 추가하십시오.
bootRun { systemProperties System.properties }
그런 다음 명령 줄에서 실행 중 ...
gradle -Dspring.profiles.active=local bootRun
env 변수를 추가하기 위해 별도의 작업을 정의 할 필요없이 활성 프로파일로 local을 설정합니다.
-
==============================
3.시스템 속성을 작업에 전달하는 일반적인 방법은 없습니다. 요컨대, 그것은 별도의 JVM을 포크하는 작업에만 지원됩니다.
시스템 속성을 작업에 전달하는 일반적인 방법은 없습니다. 요컨대, 그것은 별도의 JVM을 포크하는 작업에만 지원됩니다.
위에서 정의 된 bootRunLocal 태스크는 별도의 JVM에서 실행되지 않으며 태스크의 execute () 호출은 지원되지 않습니다 (어떤 경우 든 실행 단계에서 발생해야합니다). 반면, 테스트는 항상 별도의 JVM에서 실행됩니다 (테스트 태스크에 의해 실행되는 경우). 테스트 실행을위한 시스템 속성을 설정하려면 해당하는 테스트 작업을 구성해야합니다. 예 :
test { systemProperty "spring.profiles.active", "local" }
자세한 내용은 Gradle Build Language Reference의 Test를 참조하십시오.
-
==============================
4.아래의 gradle 2.14에서는 예제가 작동합니다. 나는 아래와 같이 추가했다. System.properties [ 'spring.profiles.active']가 null이면 기본 프로필이 설정됩니다.
아래의 gradle 2.14에서는 예제가 작동합니다. 나는 아래와 같이 추가했다. System.properties [ 'spring.profiles.active']가 null이면 기본 프로필이 설정됩니다.
bootRun { systemProperty 'spring.profiles.active', System.properties['spring.profiles.active'] }
명령 줄 예제
gradle bootRun -Dspring.profiles.active=dev
-
==============================
5.누구나이 문제가있는 경우 참조 용으로 만 사용하십시오.
누구나이 문제가있는 경우 참조 용으로 만 사용하십시오.
블라드 (Vlad)의 대답은 나에게 도움이되지 못했지만 2.4에 잘 맞습니다.
task local <<{ bootRun { systemProperty "spring.profiles.active", "local" } } local.finalizedBy bootRun
그 다음에는 그레이 스케일 로컬
-
==============================
6.
SPRING_PROFILES_ACTIVE=local gradle clean bootRun
이것은 이것과 이것에 따라 작동하며 작동합니다.
-
==============================
7.OP의 정확한 요청에 응답하는 중 ...
OP의 정확한 요청에 응답하는 중 ...
그리고 바이 패스라고 가정하면 "OP는 명령 행에서 패스"또는 "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 bootRun)에 비해 시스템 속성을 고수하는 것이 한 가지 주요 이점이며, Linux / OS X (bash 등)와 Windows (cmd.exe와 어쨌든)간에 쉽게 이식 할 수 있습니다.
나는이 블로그 게시물에서 이런 식으로 배웠다.
(업데이트 : 어쨌든 나는 같은 제안으로 @ Erich의 응답을 놓쳤다 .Opp! 나는 이식성에 대한 추가 세부 사항 때문에 나의 대답을 떠날 것이다.)
-
==============================
8.태스크를 실행하기 전에 org.springframework.boot.gradle.run.BootRunTask를 확장하고 특성을 확장 할 새로운 태스크 (이름이 bootRunLocal 인 경우)를 작성할 수 있습니다. 다음 코드를 사용하여 이러한 작업을 만들 수 있습니다.
태스크를 실행하기 전에 org.springframework.boot.gradle.run.BootRunTask를 확장하고 특성을 확장 할 새로운 태스크 (이름이 bootRunLocal 인 경우)를 작성할 수 있습니다. 다음 코드를 사용하여 이러한 작업을 만들 수 있습니다.
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/
-
==============================
9.작동 방식 :
작동 방식 :
-
==============================
10.SpringBoot 2.0.0-M5부터 시작 setSystemProperties ()는 더 이상 bootRun 작업의 메소드가 아닙니다. build.gradle을 (으)로 업데이트해야합니다.
SpringBoot 2.0.0-M5부터 시작 setSystemProperties ()는 더 이상 bootRun 작업의 메소드가 아닙니다. build.gradle을 (으)로 업데이트해야합니다.
bootRun { execSpec { // System.properties["spring.profiles.active"] systemProperties System.properties } }
이것은 springBoot의 실행 태스크가 org.gradle.process.JavaExecSpec을 사용하는 것과 같습니다.
이것은 나를 위해 Gradle 4.2를 사용하여 작동합니다.
-
==============================
11.spring-boot-gradle-plugin 문서에 따르면 다음과 같은 인수를 전달할 수 있어야합니다.
spring-boot-gradle-plugin 문서에 따르면 다음과 같은 인수를 전달할 수 있어야합니다.
./gradlew bootRun --args='--spring.profiles.active=dev'
이것은 4.9부터 새로운 그라데이션 기능입니다. 나는 그것을 프로젝트에서 사용했고 상자에서 일했습니다.
-
==============================
12.run 명령을 사용하여 {systemProperties = System.properties}를 실행하는 파일을 빌드하고 gradle run으로 시작할 수 있습니다. -Dspring.profiles.active = local
run 명령을 사용하여 {systemProperties = System.properties}를 실행하는 파일을 빌드하고 gradle run으로 시작할 수 있습니다. -Dspring.profiles.active = local
-
==============================
13.gradle 작업을 지원할 필요가없는 다른 방법 : JAVA_TOOL_OPTIONS 환경 변수를 설정하십시오.
gradle 작업을 지원할 필요가없는 다른 방법 : JAVA_TOOL_OPTIONS 환경 변수를 설정하십시오.
JAVA_TOOL_OPTIONS='-Dfoo=bar' gradle ...
또는 변수에 이미 유용한 내용이 포함되어있을 수 있습니다.
JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -Dfoo=bar" gradle ...
-
==============================
14.
// defualt value def profiles = 'dev' bootRun { args = ["--spring.profiles.active=" + profiles] }
다음과 같이 gradle 작업을 시작할 때 특정 버전을 선택할 수 있습니다.
./gradlew bootRun -P dev
"dev"는 "prod"
from https://stackoverflow.com/questions/23367507/how-to-pass-system-property-to-gradle-task by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] logback.xml에 Spring 속성 자리 표시자를 사용할 수 없습니다. (0) | 2019.01.12 |
---|---|
[SPRING] Jackson - 400 잘못된 요청 로깅을 사용하는 Spring REST (0) | 2019.01.12 |
[SPRING] Spring MVC에서 동적 URL로 리디렉션 (0) | 2019.01.12 |
[SPRING] Spring JUnit : autowired 컴포넌트에서 autowired 컴포넌트를 모의하는 법 (0) | 2019.01.12 |
[SPRING] 스프링 싱글 톤 스레드 안전성 (0) | 2019.01.12 |