2012-08-01 3 views
7

documentation에 따르면, Maven 릴리스는 프로젝트 수행 목표를 체크 아웃 한 다음 새로운 Maven 인스턴스를 생성하여 빌드합니다. 어떤 이유로 포크 된 인스턴스는 사용자의 settings.xml을 무시한 것으로 보이는데, 필자의 경우이 파일에는 부모 pom의 저장소 URL을 작성하는 데 사용되는 속성 정의가 있으므로 오류가 발생합니다. 항상 활성화 된 "넥서스"프로필의 속성의Maven 릴리스에서 분기 된 프로세스 : perform plugins가 사용자의 settings.xml을 무시합니까?

  • 사용자 Settings.XML의
    정의. 정의 된 재산의

    <profiles> 
        <profile> 
        <id>nexus</id> 
        <properties> 
         <dist.url>http://host.com/nexus/content/repositories</dist.url> 
        </properties> 
        </profile> 
    </profiles> 
    
    <activeProfiles> 
        <activeProfile>nexus</activeProfile> 
    </activeProfiles> 
    
  • 부모의 의 pom.xml
    사용 저장소의 URL을 구성합니다. (성공적으로 체크 아웃 한 나타냅니다 후, 구축, 테스트 프로젝트를 패키지)

    mvn release:perform 
    
  • 출력 :

    <distributionManagement> 
        <repository> 
        <id>nexus</id> 
        <url>${dist.url}/releases</url> 
        </repository> 
    </distributionManagement> 
    
  • 명령이 실행

    [INFO] Uploading: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar 
    [INFO] [INFO] ------------------------------------------------------------------------ 
    [INFO] [INFO] BUILD FAILURE 
    [INFO] [INFO] ------------------------------------------------------------------------ 
    [INFO] [INFO] Total time: 3.659s 
    [INFO] [INFO] Finished at: Wed Aug 01 14:40:23 EDT 2012 
    [INFO] [INFO] Final Memory: 21M/307M 
    [INFO] [INFO] ------------------------------------------------------------------------ 
    [INFO] [WARNING] The requested profile "nexus" could not be activated because it does not exist. 
    [INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project my-project: Failed to deploy artifacts: Could not transfer artifact com.acme.access:my-project:jar:1.0 from/to nexus (${dist.url}/releases): Error transferring file: no protocol: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar -> [Help 1] 
    

공지 방법 fork 된 Maven 인스턴스는 $ {dist.url}에 업로드를 시도하고 있는데 이는 setti에 정의 된 속성 ngs.xml을 읽지 못했습니다. 또한 경고 메시지는 "nexus"프로파일을 찾을 수 없다는 것을 알려줍니다. 주요 Maven 인스턴스가 프로필 정보를 fork 된 인스턴스로 전달하여 찾았 으리라 생각했지만 사용자의 settings.xml을 무시했거나 찾지 못해 프로필을 찾을 수 없었습니다.

나는이 수동으로 플러그인의 arguments 인수로 「랩」Maven의 명령 줄 -s 인수의 사용을 통해 settings.xml 파일의 위치를 ​​지정하는 것입니다 회피 발견하는 유일한 방법,

mvn release:perform -Darguments="-s C:\Users\theuser\.m2\settings.xml" 

에서와 같이 플러그인이 예상대로 작동하고 있습니까? 위에서 한 것처럼 파일의 위치를 ​​지정하지 않고도 사용자의 settings.xml 안에 속성 정의를 유지할 수 있습니까?

더 자세한 정보는 :

  • 문제는 일을 일으키는 글로벌 settings.xml에 프로필 정보를 복사로 플러그인이 사용자의 settings.xml을 찾지 못하는 특별히 것으로 보인다.

  • help:active-profiles을 실행하면 프로필이 활성 상태임을 나타 내기 때문에 사용자의 settings.xml의 이름이 제대로 지정되었거나 생성되었습니다. 수동으로 빌드하고 mvn clean deploy으로 배포하면 올바르게 작동합니다 (예 : 저장소 URL이 올바르게 계산되어 이슈가 업로드 됨).

+0

내 경우에는 비슷한 유형의 문제라고 생각합니다 .http : //stackoverflow.com/questions/18636196/maven-issue-the-goal-you-specified-requires-a-project-to-execute-bhere-there -is –

답변

10

maven-release-plugin의 버그 일 필요는 없습니다.이 Maven 버그가 발생한 것 같습니다 : MNG-5224 버그는 Maven 3.0.4에서 수정되어야합니다.

+1

동의 함,이 동작을 알고 있으면 버그로 간주됩니다. 감사! – jsiqueira

+0

Maven 3.0.4에서 동일한 문제가 발생했습니다 - r1232337 – Aure77

+0

Maven 3.3.3에서 같은 문제가 발생했습니다 ... – gogognome

관련 문제