스프링으로 만든 애플리케이션은 일반적으로 환경 격리를 위해 프로파일을 구분한 프로퍼티 파일을 사용함.
이 프로퍼티 파일을 적용하는 방법은 보통 다음과같다.
Dspring.profiles.active=xxx 가 추가되어 JVM에게 전달됨. 즉 2번과 같음.Dspring…이나 -spring… 등으로 프로파일 옵션을 전달한다. 이 값은 JVM에게 전달된다.P 옵션을 사용한다. → 여기가 조금 혼동할만한 여지가 있다.
코드 설정의 예시
<profiles>
<profile>
<id>prod</id>
<properties>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
</profile>
</profiles>
이렇게 pom.xml에 설정한다면, -P 옵션으로 전달된 값이 스프링의 프로파일 선택 옵션과도 이어지게 된다.
프로파일 설정이 복잡하게 되어있는 좋은 예시 레포를 발견했다. 이 레포는 실행을 다음과 같이 한다.
tomcatRun -Pphase=local -Dlocalparam=local -Dmember.api.property.mode=local
뭔 프로퍼티를 3개씩이나 넘긴다. 마지막 하나는 라이브러리용이라고 해도, 앞의 두개는 왜 뭘까.
보면… 젠킨스를 통한 빌드타임에 -Pphase 를 받도록 되어있다. 그리고 보통 -P 는 빌드 도구가 사용하는 프로퍼티기도 함.

-P 를 프로젝트 프로퍼티로 사용하고, 그레이들 빌드 스크립트에서 project.property("foo") 와 같이 접근가능함.-P 를 프로파일 활성화 플래그로 사용한다. 때문에 mvn package -P test 로 실행하면, test 라는 프로파일만 활성화 된다.저 레포는 그레이들로 빌드를 하고 있고.. 스프링 부트를 쓰고 있지 않다. 그래서 -Ppahse 는 오직 빌드 옵션에만 적용됨.