2012-04-27 5 views
1

많은 메이븐 프로젝트가 있습니다. 병합 할 필요가있는 두 가지 글로벌 settings.xml이 있습니다. 둘 다 프로파일 내부의 저장소를 설명합니다. mirror.xml과 profiles 태그로 두 개의 settings.xml을 병합했습니다. 프로필 중 하나가 settings.xml 파일의 activeProfile 태그에 의해 활성화됩니다.메이븐 프로젝트 별 프로파일 선택

다른 프로젝트의 활성 프로필을 어떻게 변경 할 수 있습니까? 프로젝트 pom.xml 파일에서 선택할 수 있습니까?

감사합니다, 브롬, Stristi

답변

2

이 문서는 프로파일을 활성화 할 수있는 방법에 대해 설명합니다 : Introduction to Build Profiles.

프로필을 환경 변수를 통해 활성화 할 수 있지만 많은 프로젝트가 있고 프로젝트별로 프로필을 적용하려는 경우 각각의 프로젝트 빌드를 실행하기 전에 환경 변수를 변경하는 것은 잘못된 해결책입니다. IDE로 작업하는 경우 시작 구성을 구성하여 각 프로젝트의 속성을 설정하고 각 프로젝트의 연속 통합 내에서 올바른 mvn 실행 명령을 구성해야합니다. 그러나 이렇게하면 서로 다른 프로파일로 활성화해야하는 서로 다른 프로젝트로 구성된 집계 빌드를 빌드하는 것이 불가능 해집니다.

가능한 해결 방법 (우아하지는 않지만 제대로 작동 할 것이라고 확신 함)은 파일 존재 여부에 따라 프로필을 활성화하고 다른 프로젝트에 대한 '마커 파일'을 관리하여 필요한 파일을 활성화하는 것입니다 . 예 :

예상되는 동작 :이 프로필은 '.profile-A'라는 이름의 파일이 프로젝트의 루트 폴더에있는 경우 활성화됩니다.

그러나이 시점에서 흥미로운 질문이 하나 더 생깁니다. 집계 된 빌드의 경우 동작은 무엇입니까?

+0

나는이 똑같은 해킹을 생각하고 있었지만 집계 된 빌드의 경우 동작을 묻는 것으로 무엇을 얻었는지 확신 할 수 없었습니다. _ _ – Lucas

0

당신이 간단하게 당신 받는다는 프로필에 activeByDefault 태그를 추가 할 수 있습니다

<profiles> 
    <profile> 
    <id>your-profile</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    </profile> 
</profiles> 
+0

예, 필자가 작성한 것처럼 설명 된대로이 태그로 프로필 중 하나를 활성화했습니다. 하지만 문제는 프로젝트 pom.xml 파일에 다른 프로젝트에 다른 프로필을 활성화하도록 설정할 수 있습니까? – user1360847

0

내 프로젝트에이 방법을 선호 :

<profile> 
    <id>dev</id> 
    <activation> 
    <property> 
     <name>env</name> 
     <value>dev</value> 
    </property> 
    </activation> 
    ... 
</profile> 

그런 당신에게 이런 방식으로 활성화 할 수 있습니다 :

mvn your_goal -Denv=dev 

감사합니다,

Boskop

0

settings.xml 파일에 단일 구성을 사용하려면 Repository Manager (Archiva, Artifactory, Nexus 사전 순)를 사용해야합니다. 이렇게하면 빌드 파일 환경이 달라지는 문제가 해결됩니다.

관련 문제