maven deploy 400 Bad Request

将一个maven项目发布到私有的nexus服务器,很简单,就是这样一个命令即可


mvn deploy

但是在首次尝试时遇到了一个400错误

Transfer failed for http://yourhost/nexus/content/groups/public/path/to/your/project/1.0/project-1.0.pom 400 Bad Request

一番检查发现是因为pom.xml中配置错了发布地址

   
        http://yourhost/nexus/content/groups/public
    
   ....
    
        
            private-nexus
            ${releases.url}
        
    

需要将release.url变量改成一个允许发布的地址。

怎么找这样的地址呢?在私服nexus中可以看到仓库分为

  • group
  • hosted
  • virtual
  • proxy
nexus repositories

我们一开始设置的release url是group类型的地址,而这个地址是不能够用于发布的,因为它只是将各个参考group/聚合在一起的呀。

我们只能选择hosted类型的仓库进行发布,这里我们根据项目的特点,选择releases那个仓库。

因为这个库的Deployment Policy是Allow Redeploy,所以能够进行发布。

image.png

我们在Summary中查看distributionManagement所需的信息

image.png

用其中的url替换我们项目pom文件中的内容,即

   
        http://yourhost/nexus/content/repositories/releases
    
   ....
    
        
            private-nexus
            ${releases.url}
        
    

再次执行 mvn deploy就可以看到我们的jar包被成功发布到私有仓库了。

image.png

PS:因为发布到私有仓库是需要账号密码的,所以你需要在自己的~/.m2/settings.xml中指定server的id和账号密码,其中id要和项目中的id一致。

你可能感兴趣的:(maven deploy 400 Bad Request)