2012-06-04 2 views
0

버전 -maven-plugin을 사용하여 내 로컬 넥서스 저장소에서 최신 릴리스/스냅 샷 버전을 검색하여 maven 프로젝트를 업데이트하려고합니다. 이 플러그인을 실행하여 버전을 업데이트 할 때 다음과 같은 동작을 발견했습니다.버전 -maven-plugin은 nexus에서 최신 버전을 검색하지 못합니까?

최신 버전이 넥서스에 있지만 로컬 리포지토리에 없다고 알고 있지만 최신 버전을 찾지 못했습니다. 현지 repo에서 최신. 업데이트하려는 이슈에 대한 내 로컬 저장소에서 모든 maven-metadata * .xml 파일을 삭제하면 최신 maven-metadata * .xml 파일을 다운로드하고 올바르게 최신 버전을 찾습니다.

가 나는 2.0.6 og의 모든 받는다는 API를 사용하고 있다고보고, 전체 업데이트 메커니즘을 구동 방법은 MavenMetadataSource에 의해 인터페이스 ArtifactMetadataSource 및 구현에서 retrieveAvailableVersions()이다.

가 어떻게 항상 .xml 파일 I 최신 버전을 얻을 수 있도록 최신 받는다는 - 메타 데이터 *를 다운로드하려면이 플러그인의 코드를 변경할 수 있습니다 MY 질문? 또는 다른 신뢰할 수있는 방법이 있다면 ...

시간 내 주셔서 감사합니다.

답변

0

나는 실제로 해결책을 스스로 찾아 내 pom.xml 파일을 업데이트하는 목표를 실행하기 전에 실행할 목표를 만들었습니다. 이것은 모든 저장소의 메타 데이터를 업데이트하는 방법입니다. 전체 목표가 필요한 경우 알려 주시기 바랍니다.

public void updateMetadata(Artifact artifact){   
    getLog().info("Updating metadata for: " + artifact.getGroupId()+":"+artifact.getArtifactId()); 
    RepositoryMetadata metadata = new ArtifactRepositoryMetadata(artifact);  
    for (Iterator<ArtifactRepository> repo = remoteArtifactRepositories.iterator(); repo.hasNext();){ 
     ArtifactRepository repository = repo.next();    
     ArtifactRepositoryPolicy policy = 
       metadata.isSnapshot() ? repository.getSnapshots() : repository.getReleases(); 
     File file = new File(localRepository.getBasedir(), 
       localRepository.pathOfLocalRepositoryMetadata(metadata, repository)); 
     getLog().info("Updating " + repository.getBasedir());    
     try { 
      wagonManager.getArtifactMetadata(metadata, repository, file, policy.getChecksumPolicy()); 
      getLog().info("Updated..."); 
     } catch (TransferFailedException e) { 
      getLog().info("Couldn't find " + metadata + " from repository: " + repository.getId() + 
        "\n Reason\n: " + e.getMessage()); 
      e.printStackTrace(); 
     } catch (ResourceDoesNotExistException e) { 
      getLog().info("Cannot find " + metadata + " in repository: " + repository.getId()); 
      if (file.exists()){ 
       file.delete(); 
      } 
      e.printStackTrace(); 
     } 
    } 
}