2010-07-20 3 views
8

저는 개발과 생산이라는 두 개의 프로파일을 사용하고 있습니다.maven release plugin은 releaseProfile을 무시합니다.

개발이 기본적으로 활성화되어 있어야합니다. 출시 할 때 생산을 사용해야합니다. 내 pom.xml 파일에서

나는이 : 그냥 작동하지 않습니다

[...] 
<plugin> 
<artifactId>maven-release-plugin</artifactId> 
<version>2.0-beta-9</version> 
<configuration> 
    <useReleaseProfile>false</useReleaseProfile> 
    <goals>deploy</goals> 
    <arguments>-Pproduction</arguments> 
</configuration> 
</plugin> 
[...] 
<profiles> 
    <profile> 
    <id>production</id> 
    <properties> 
     <profile.name>production</profile.name> 
    </properties> 
    [...] 
    </profile> 
    <profile> 
    <id>development</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
    <profile.name>development</profile.name> 
    </properties> 
     [...] 
    </profile> 
[...] 

.
useReleaseProfiles 중 하나가 작동하지 않습니다 http://jira.codehaus.org/browse/MRELEASE-459

개발 프로파일은 항상 활성화하지만 mvn release:perform를 실행하지 않는 경우이어야한다. 어떻게 이것을합니까?

[업데이트] : 디버그 플래그를 사용하여 생산 프로필이 사용되었지만 개발 프로필도 사용되었습니다 (activeByDefault). 이 인수는 releaseProfile 인수로 대체 할 수 없습니다. 릴리스 플러그인이 "프로덕션"프로필 만 사용하도록하는 것이 좋습니다.

답변

13

maven-release-plugindocumentation 같은 것을 실행하여 작성합니다.

이 방법은 명령 줄에서 수동으로 릴리스 프로필을 호출하는 것보다 나은 방법입니다. 한 가지 이유는 릴리스에 사용 된 프로필이 pom.xml에 문서화되고 태그가 지정된 코드로 저장되기 때문입니다. 따라서 프로젝트가 처음 출시 된 것과 똑같은 방식으로 빌드 프로세스를 이해하기 쉽고 나중에 반복하기 쉽습니다.

2.4보다 오래된 maven-release-plugin을 사용하는 경우이 부분을 참조하십시오. bug 위에서 언급 한 매개 변수의 사용을 금지합니다.

다중 모듈 프로젝트의 경우 "releaseProfiles"구성을 루트 pom에 넣어야합니다. 이에 대한 자세한 내용은 this issue을 참조하십시오.

+1

@editor, 버그가 여기에 코멘트로 수정되었다는 것을 적어 두는 것이 좋습니다. – Arun

+0

@Leif이 버그 수정에 대한 업데이트를 보내 주셔서 감사합니다! – devdanke

+0

2.5.1에서도 CLI에서 수동으로 '-Prelease'를 사용하여 프로필을 지정해야합니다. –

2

프로필을 통해 프로필을 활성화해야한다고 생각합니다.

<profiles> 
    <profile> 
    <id>production</id> 
    <activation> 
     <property> 
     <name>build</name> 
     <value>release</value> 
     </property> 
    </activation> 
    [...] 
    </profile> 
    <profile> 
    <id>development</id> 
    <activation> 
     <property> 
     <name>build</name> 
     <value>develop</value> 
     </property> 
    </activation> 
    [...] 
    </profile> 
<profiles> 

수행은 자동으로 해제 과정에서 프로파일을 호출 할 releaseProfiles 구성 매개 변수를 사용하여 장려이

mvn -Dbuild=develop package 
mvn -Dbuild=develop test 

mvn -Dbuild=release release:prepare 
mvn -Dbuild=release release:perform 
+0

그래, 난 이미이 같은 프로파일을 설정하는 것이 가능하다는 것을 알지 못했다. 그러나 이렇게하면 용서할 수 있습니다.잊어 버리면 출시 된 패키지에 잘못된 구성 파일이 포함되어 배포가 실패합니다. 주어진 프로필 만 사용하도록 릴리스 플러그인을 시행하고 싶습니다. – Janning

+0

릴리스 플러그인에서 필요로하고 사용하는 프로파일에서 일부 특성을 정의하는 경우에는이를 잊어 버릴 수 없습니다. – splash

+0

마지막 코멘트를 모르겠습니다. 설명해 주시겠습니까? – Janning

1

당신이 "Introduction to Build Profiles"을 선택하면, "프로파일 비활성화"나는 당신이 당신의 기본 프로필을 비활성화하려면이 옵션을 사용할 수있는 것 같아요

mvn groupId:artifactId:goal -P !profile-1,!profile-2 

를?

0

이것은 매우 오래된 게시물이지만이 문제는 최근에 들어 봤습니다. releaseProfile은 릴리스이라는 프로필로 releaseProfiles를 설정할 때만 유용했습니다. 다른 프로파일은 동일한 오류를 제공합니다.

샘플 코드 :

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
      <configuration> 
       <tagNameFormat>@{project.artifactId}[email protected]{project.version}</tagNameFormat> 
       <autoVersionSubmodules>true</autoVersionSubmodules> 
       <releaseProfiles>release</releaseProfiles> 
       <allowTimestampedSnapshots>true</allowTimestampedSnapshots> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<profiles> 
    <profile> 
     <id>release</id> 
     <properties> 
      <connectionUrl>${scm-base}/tags/${project.artifactId}-${project.version}</connectionUrl> 
     </properties> 
    </profile> 
</profiles> 
관련 문제