美文网首页
maven deploy 400 Bad Request

maven deploy 400 Bad Request

作者: 洋洋洒洒看东西 | 来源:发表于2020-08-27 17:33 被阅读0次

    将一个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中配置错了发布地址

       <properties>
            <releases.url>http://yourhost/nexus/content/groups/public</releases.url>
        </properties>
       ....
        <distributionManagement>
            <repository>
                <id>private-nexus</id>
                <url>${releases.url}</url>
            </repository>
        </distributionManagement>
    

    需要将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文件中的内容,即

       <properties>
            <releases.url>http://yourhost/nexus/content/repositories/releases</releases.url>
        </properties>
       ....
        <distributionManagement>
            <repository>
                <id>private-nexus</id>
                <url>${releases.url}</url>
            </repository>
        </distributionManagement>
    

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

    image.png

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

    相关文章

      网友评论

          本文标题:maven deploy 400 Bad Request

          本文链接:https://www.haomeiwen.com/subject/xwfhsktx.html