【问题标题】:versions-maven-plugin doesn't retrieve the latest version on nexus?版本-maven-plugin 不检索nexus 上的最新版本?
【发布时间】:2012-06-04 15:55:22
【问题描述】:

我正在尝试(部分成功地)使用 versions-maven-plugin 从我的本地 和 nexus 存储库中检索最新版本/快照版本以更新 maven 项目。在运行此插件更新版本时,我注意到以下行为:

即使我知道nexus 中有更新的版本,但不在我的本地存储库中,它也找不到最新版本,而是从本地存储库中找到最新版本。如果我从本地存储库中删除要更新的工件的所有 maven-metadata*.xml 文件,它会下载最新的 maven-metadata*.xml 文件并正确找到最新版本。

我看到它使用 2.0.6 og 所有 maven API,驱动整个更新机制的方法是接口 ArtifactMetadataSourceretrieveAvailableVersions() /strong> 并由 MavenMetadataSource 实现。

我的问题 如何更改此插件的代码以始终下载最新的 maven-metadata*.xml 文件,以便获得最新版本?或者如果有任何其他可靠的方法可以做到这一点..

感谢您的宝贵时间。

【问题讨论】:

    标签: versioning maven-plugin pom.xml versions-maven-plugin


    【解决方案1】:

    实际上我自己找到了解决方案并创建了一个目标,在运行更新我的 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();
            }
        }
    }    
    

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 2015-07-11
      • 2012-06-05
      相关资源
      最近更新 更多