Maven*部署:为何SNAPSHOT版本同时出现在发布和快照仓库?

Maven*部署:SNAPSHOT版本为何同时出现在发布和快照仓库?

在使用Maven将项目部署到*时,如果pom文件配置如下,即使版本号包含snapshot后缀,项目却同时出现在发布和快照仓库中:


    
        x-repo
        http://x-repo.abc.net/repository/maven-releases/
    
    
        x-repo
        http://x-repo.abc.net/repository/maven-snaps

hots/

问题根源:重复的仓库ID

问题的关键在于repositorysnapshotRepository都使用了相同的idx-repo。 Maven使用id来识别仓库,相同的id导致Maven将发布和快照仓库视为同一个仓库。 因此,即使版本号包含snapshot,项目仍然被部署到releases仓库。

解决方案:使用不同的仓库ID

为了避免这个问题,必须为发布和快照仓库设置不同的id


    
        x-repo-releases
        http://x-repo.abc.net/repository/maven-releases/
    
    
        x-repo-snapshots
        http://x-repo.abc.net/repository/maven-snapshots/
    

修改后的配置能够让Maven正确区分发布和快照仓库,确保snapshot版本的项目只部署到快照仓库。