2012-04-03 2 views
8

release:preparerelease:perform (둘 다) 목표에서 일부 Maven 프로파일을 활성화하는 솔루션을 찾을 수 없습니다. 이 같은 것 :두 릴리스에서 프로파일 활성화 : 준비 및 릴리스 : 수행

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.1</version> 
    <configuration> 
    <useReleaseProfile>false</useReleaseProfile> 
    <goals>deploy</goals> 
    <arguments>-Pmy-release</arguments> 
    </configuration> 
</plugin> 

그냥 작동하지 않습니다. 나는 설정이 release:perform 동안에 만 작동한다는 것을 알고 있습니다. 따라서 arguments 설정이 정확히 원하는 것입니다. 그러나 실행 중에 my-profile 프로필이 활성화되어 있지 않습니다. 내가 뭔가 잘못하고 있는거야?

답변

5

중복 된 질문입니다. 이 질문을 한 번보세요, 대답이 있습니다. maven release plugin ignores releaseProfile

기본적으로 릴리스 플러그인 2.2.1 버전은 releaseProfiles 매개 변수를 추가합니다.이 매개 변수를 사용하면 출시 중에 활성화 할 프로필을 정의 할 수 있습니다. 당신이 원하는 일을에서 금지하는 버그 ...

편집이처럼

http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html

불행하게도, 보이는 내가이 경우에 사용했다

한 가지입니다 -P 인수를 사용하지 않고 -Denv=release을 사용하는 환경 설정을 통해 프로필을 트리거합니다. 그런 다음 POM에서 env 값을 기반으로 한 프로필 활성화가 있습니다. 이것은 항상 나를 위해 일해 왔습니다.

+2

답장을 보내 주셔서 감사합니다. @nwinkler. 'releaseProfiles' 매개 변수는'release : perform' 목표에만 관련되어 있으므로'release : prepare' 중에는 작동하지 않습니다. 그리고, 당신 말이 맞아요, 그 행동은 어쨌든 정말 이상합니다. '-Dmy-release' 변수를 사용하는 팁이 실제로 현재의 해결 방법입니다. 나는 그것이 나의 질문을 곧바로 가지고 그것에 대해 생각할 어떤 길도 제안하지 않는다는 것을 언급하지 않았다.그러나 이것이 지금은 유일하게 (또는 적어도 최선의) 방법이라고 생각됩니다. 이미'2.3-SNAPSHOT' 버전의'maven-release-plugin'을 시도해 보았고 stil이 제대로 작동하지 않습니다. 슬퍼. –

4

maven release plugin이 추가 인스턴스를 시작하기 때문에 추가 인수를 지정해야합니다. 당신은

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <arguments>${myReleaseArgs}</arguments> 
    </configuration> 
</plugin> 

및 실행

mvn release:prepare release:perform -DmyReleaseArgs="-Pmy-release -DskipTests=true" -Pmy-release -DskipTests=true 

을 구분하고 네 그것은 복제해야합니다.

4

-Darguments = "- PmyProfile"이 작업을 수행하는 것 같습니다. 준비 및 발표 : 그것은 모두 출시 프로파일을 활성화하여 젠킨스 작동

1

두 속성 위에서 잘 작동하더라도

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-release-plugin</artifactId> 
     <version>2.5.1</version> 
     <configuration> 
     <releaseProfiles>myprofile</releaseProfiles> 
     <arguments>-Pmyprofile</arguments> 
     </configuration> 
    </plugin> 
    </plugins> 
</build > 

를 설정하여 수행, 내가 파일 활성화 프로파일을 사용하는 것이 더 유용하다고. '마스터'프로필이있는 오래된 개념은 부모님의 프로필에있는 것처럼 문제를 일으키고있었습니다. 즉, 그것은 임의의 모든 단일 모듈에서 활성화되는 것을 의미했습니다.

해결하려면 프로필에서 파일 활성화 방법을 사용했습니다. 그것은 더 잘 작동하고 보너스로 Jenkins에서 릴리스를 단순화합니다. 이클립스에서는 커맨드 라인에서 Jenkins의 모든 곳에서 maven이 파일을 탐지하고 maven-release-plugin을 설정할 필요가 없다. 또한 프로파일은 올바른 모듈에서만 활성화됩니다.

관련 문제