programing

스프링: 명령줄에서 하나의 application.property를 덮어씁니다.

javaba 2022. 10. 6. 21:22
반응형

스프링: 명령줄에서 하나의 application.property를 덮어씁니다.

기본 변수 값을 가진 application.properties 파일이 있습니다.그 중 하나를 변경할 수 있으면 좋겠습니다.mvn spring-boot:run파일 전체를 변경하는 방법을 찾았는데, 이 속성 중 한두 개만 변경했으면 합니다.

명령줄 인수로 개별 속성을 전달할 수 있습니다.예를 들어 다음과 같이 설정할 경우server.port실행 가능한 jar를 기동할 때는, 다음의 조작을 실행할 수 있습니다.

java -jar your-app.jar --server.port=8081

또는,mvn spring-boot:run스프링 부트 2.x의 경우 2.x:

mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081"

또는 Spring Boot 1.x를 사용하는 경우:

mvn spring-boot:run -Drun.arguments="--server.port=8081"

또, 다음의 인수를 설정할 수도 있습니다.spring-boot:run응용 프로그램의pom.xml따라서 매번 명령줄에서 지정할 필요가 없습니다.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <arguments>
            <argument>--server.port=8085</argument>
        </arguments>
    </configuration>
</plugin>

약간의 업데이트를 위해 Spring boot 1.X Maven 플러그인은--Drun.argumentsMaven 사용자 속성이지만 Spring Boot 2.X Maven 플러그인은-Dspring-boot.run.arguments메이븐 사용자 속성

따라서 Spring 2의 경우 다음 작업을 수행해야 합니다.

mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081"

여러 개의 인수를 전달해야 하는 경우,구분자로 지정합니다.인수 사이에 공백은 사용하지 마십시오.

mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081,--foo=bar"

maven 플러그인 구성과 fat jar에서 인수를 전달하는 방법에 대해서는 변경되지 않았습니다.
그래서 매우 훌륭한 앤디 윌킨슨 답은 여전히 옳다.

빠른 업데이트:

spring-boot 2.X 및 maven 3.X의 최신 버전을 사용하는 경우 다음 명령줄이 서버 포트를 덮어씁니다.

java -jar -Dserver.port=9999   your_jar_file.jar

속성을 바꾸도록 환경 변수를 설정할 수 있습니다.예를 들어 속성 이름이 있습니다.test.props=1환경변수가 있는 경우TEST_PROPS스프링 부트가 자동으로 덮어씁니다.

export TEST_PROPS=2
mvn spring-boot:run

덮어쓰기 및 전달에 필요한 모든 속성을 포함하는 json 문자열을 생성할 수도 있습니다.-Dspring.application.json또는 를 사용하여 json을 내보냅니다.SPRING_APPLICATION_JSON.

mvn spring-boot:run -Dspring.application.json='{"test.props":"2"}'

또는 -Dtest.props=2를 사용하여 속성을 전달합니다.

mvn spring-boot:run -Dtest.props=2

스프링 부트 시 테스트 완료2.1.17및 메이븐3.6.3

콤마를 사용하지 않을 경우 다중 모드에서 일부 사용자 지정 속성 또는 스프링 부트 속성을 재정의하려면 다음과 같이 쉼표 대신 공백을 사용합니다.

mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8899 --your.custom.property=custom"

Spring Boot에서는 다음과 같이 속성을 덮어쓰도록 프로비저닝이 있습니다.

mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8082

Gradle에 의한 실행:

  • 기본 포트(8080)에서 실행: ./gradlew bootRun
  • 지정된 포트(888)에서 실행: ./gradlew bootRun --args='--server.port=8888'
  • 에 변수가 있는 경우application.properties '''PORT , , 을 합니다.PORT=8888 ./gradlew bootRun

Maven 실행:

  • 기본 포트(8080)에서 실행: mvnw spring-boot:run
  • 지정된 포트(888)에서 실행: mvnw spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8085'
  • 지정된 포트(888)에서 실행: mvn spring-boot:run -Dspring-boot.run.arguments='--server.port=8085'
  • 제공된 포트(888)에서 다른 커스텀속성과 함께 실행합니다. mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8899 --your.custom.property=custom"
  • application.properties '''PORT , , 을 합니다.SERVER_PORT=9093 mvn spring-boot:run

「」를 사용합니다.java -jar:

  • .jar 파일을 만듭니다.
    • 그래들 ★★★★★★★★★★★★★★★★★★*./gradlew clean build. 안에 jar 파일이 있습니다.build/libs/더입니니다다
    • 경우: Maven의 경우:mvn clean install 수: 항아리target더입니니다다
  • 기본 포트(8080)에서 실행: java -jar myApplication. jar
  • 지정된 포트(888)에서 실행: java -jar myApplication.jar --port=8888
  • 지정된 포트(888)에서 실행: java -jar -Dserver.port=8888 myApplication.jar
  • 「」(8888)를 지정 포토(합니다.SERVER_PORT 파일 application.properties 파일: SERVER_PORT=8888 java -jar target/myApplication.jar

mvn 클린 설치 실행 후 jar 파일이 있는 경우 다음과 같이 double-을 사용하여 application.yml에 있는 속성을 덮어쓸 수 있습니다.

java -jar name_of_your_jar_file.jar --parameter=value

예를 들어, 서버를 시작할 때 서버 포트를 변경해야 하는 경우 다음을 작성할 수 있습니다.

java -jar name_of_your_jar_file.jar --server.port=8888

언급URL : https://stackoverflow.com/questions/37052857/spring-overriding-one-application-property-from-command-line

반응형