2014-12-27 5 views
1

필자는 Maven에 익숙하지 않으며이 리소스 및 다른 리소스에서 프로필에 대해 조금 읽었습니다.Maven 프로파일은 어떻게 사용하나요?

기본 값을 무시하거나 특정 작업을 수행하려면 프로필을 사용하는 것이 좋을까요?

내 기존 프로젝트에서 나는 단지 app.mode 속성을 재정의하는 것을 볼 수있는 아래 프로필을 볼 수 있습니다. 하지만이 속성을 사용하여 보지 못합니다. 추가 빌드 위치. 나는 여기서 특별한 일이 무엇인지 확신 할 수 있는가?

<profiles> 
     <profile> 
      <id>dev</id> 
      <properties> 
       <app.mode>dev</app.mode> 
      </properties> 
     </profile> 
</profiles> 
+0

참조하십시오. mvn의 copy-replace/filter 기능을 봄 설정에서'app.mode'로 바꾸어보십시오. – Hannes

답변

0

프로파일은 메이븐 명령 행에 -Pdev 전달하면 활성화 될 것입니다.

mvn -Pdev 

http://maven.apache.org/guides/introduction/introduction-to-profiles.html을 참조하십시오.

이 프로필의 속성은 app.mode의 설정을 dev으로 변경합니다. $[app.mode}의 사용을 위해 pom 파일 (및 모든 모듈의 폼)을 검색하여 어떤 일이 일어나고 있는지 확인할 수 있습니다.

Maven 속성은 Spring에 자동으로 전달되지 않지만 구성 속성을 찾아 시스템 속성으로 다시 내보내 봄에 표시되도록하는 것이 일반적입니다. 이것은 대개 확실한 설정과 failsafe 설정에서 발생하지만 명시 적으로, 당신은 여전히 ​​${app.mode}을 어느 곳에서나 볼 수 있습니다.

+0

@ bmargilies 사실 나는 그것이 어떻게 활성화되는지 알지만 우리는 우리가이 프로파일을 가지고 특별한 것을 얻지 못하고있다. – emilly

+0

나는 pom 파일에서 $ {app.mode}를 검색해야한다고 말한다. 권리? 그렇다면 pom 파일에서 $ {app.mode}의 사용법을 찾지 못했습니다. 하지만 네, spring.xml 파일에서 사용 된 것을 볼 수 있습니다. 하지만 봄에 공급품을 공급할 수 있는지 궁금합니다. – emilly

+0

예, 더 자세히 설명했습니다. – bmargulies

0

설정되어있는 속성이 빌드의 다른 곳에서 사용되지 않는 경우 (하위 모듈을 확인 했습니까?) 질문에 대한 대답은 "이 경우 아무 것도하지 않습니다."입니다.

그러나 일반적으로 이와 같은 속성을 설정하면 나중에 필요할 때 사용할 수 있도록 나중에 빌드에서 사용할 수있게됩니다. 추측해야한다면, 이것은 불완전한 코드 정리 또는 조숙 한 최적화의 결과라고 말할 수 있습니다.

+0

서브 모듈을 포함한 pom 파일에서 $ {app.mode}의 사용법을 찾지 못했습니다. 하지만 네, spring.xml 파일에서 사용 된 것을 볼 수 있습니다. 하지만 봄에 공급품을 공급할 수 있는지 궁금합니다. – emilly

1

원하는 경우 Maven 프로파일을 구성 할 수 있습니다. 다음은 몇 가지 사용 사례입니다.

a) 프로젝트에 여러 개발자가 있습니다. 정치적, 종교적 이유로 일부 개발자는 Windows를 사용하고 일부는 Linux를 사용합니다. 팀은 Linux 용과 Windows 용으로 두 가지 프로파일을 개발하고 프로젝트 루트 경로, 임시 폴더 경로, 지원 프로그램 경로를 설정합니다. 이러한 변수는 종속성 계산 프로세스와이 정보가 필요한 종속 프로세스에 주입됩니다. 이 프로파일 설정은 각 프로그래머의 settings.xml 파일에 저장됩니다.

b) 개발자 중 한 명이 프로젝트에 1 주일간 대출합니다. 그녀는 자신의 컴퓨터를 프로젝트 표준 디렉토리 레이아웃 등으로 재구성하지 않으므로 자신의 루트 디렉토리에서 작업 할 수있는 자체 settings.xml을 만듭니다.

c) 프로젝트에서 Hudson 또는 Jenkins와 같은 연속 통합 서버를 사용합니다. CI는 통합 테스트를위한 자체 데이터베이스가 있어야하므로 요구 사항에 따라 "devtest"및 "prodtest"및 "fulltest"와 같은 모드를 가질 수 있습니다.

+0

서브 모듈을 포함한 pom 파일에서 $ {app.mode}의 사용법을 찾지 못했습니다. 하지만 네, spring.xml 파일에서 사용 된 것을 볼 수 있습니다. 하지만 봄에 공급품을 공급할 수 있는지 궁금합니다. – emilly

관련 문제