2014-06-06 3 views
0

documentation에 따르면 deploy:deploy-file은 pom 파일을 직접 지정할 때 작동한다고 가정합니다. 이 경우 문서에서는 "groupId, artifactId, 버전 및 패키징 인수가 필요하지 않습니다. 배포 파일 목표는 주어진 POM에서이 정보를 얻을 것이기 때문에"라고 말합니다. 나는 다음과 같은 명령을 실행할 때deploy : deploy-file이 pom 파일에서 이슈, 그룹 등을 찾지 못함

그러나 : 추가 통찰력을 공개하지 않는 mvn -e -X를 사용

[INFO] Building Maven Default Project 
[INFO] task-segment: [deploy:deploy-file] (aggregator-style) 
[INFO] ------------------------------------------------------------------------ 
[INFO] [deploy:deploy-file] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Missing group, artifact, version, or packaging information 

:

mvn deploy:deploy-file -DpomFile=webapp-6.0.2.pom -Dfile=webapp-6.0.2.jar -DrepositoryId=internal -Durl=dav:http://server:9091/archiva/repository/internal -Dpackaging=jar -DgeneratePom=false 

을 나는이 오류가 발생합니다. Maven 2.0.9와 maven-deployer-plugin 버전 2.3을 사용하고 있습니다.

설명서가 잘못되었거나 나 빠졌습니까?

+0

언급 한 내용에 따라 2.8.1 및 ** 2.3이 아닌 maven-deploy-plugin의 최신 버전을 사용하는 것이 좋습니다. 가장 중요한 것은 Maven 3.X를 사용하는 것입니다. Maven 2.0.9가 너무 오래되었습니다. 2.0.9는 Maven 2.0의 최신 버전이 아닙니다. Maven 2.0.9는 2008 년에 출시 된 것으로 5 세를 의미합니다. Maven 3.1.1 또는 Maven 3.2.1로 업데이트 ... – khmarbaise

+0

업그레이드는 현재 나에게 옵션이 아니지만 예, [최신 버전]으로 표시됩니다 (http://svn.apache.org/viewvc/maven/). plugins/tags/maven-deploy-plugin-2.8.1/src/main/java/org/apache/maven/plugin/deploy/DeployFileMojo.java? view = markup)은 문서의 설명대로 작동합니다. – GreenGiant

답변

0

tl; dr : 배포 파일 mojo는 상위 프로젝트에서 버전 번호를 상속하지 않으므로 pom에 직접 입력하거나 -Dversion=... 매개 변수로 지정해야합니다.

당신이 어떻게 보느냐에 따라, 이것은 버그 또는 문서의 부족입니다. 배포 플러그인의 소스가 있습니다

Parent parent = model.getParent(); 

if (this.groupId == null) 
{ 
    if (parent != null && parent.getGroupId() != null) 
    { 
     this.groupId = parent.getGroupId(); 
    } 
    if (model.getGroupId() != null) 
    { 
     this.groupId = model.getGroupId(); 
    } 
} 
if (this.artifactId == null && model.getArtifactId() != null) 
{ 
    this.artifactId = model.getArtifactId(); 
} 
if (this.version == null && model.getVersion() != null) 
{ 
    this.version = model.getVersion(); 
} 
if (this.packaging == null && model.getPackaging() != null) 
{ 
    this.packaging = model.getPackaging(); 
} 

이 버전 번호를 플러그인은 부모의 groupId을 상속하려고 것을 의미하지만. 내 특별한 경우에, 내 pom은 version을 놓치고 있었고, 나머지는 대부분의 maven과 마찬가지로 부모로부터 상속받을 것으로 예상되었습니다.