maven deploy 400 Bad Request

2020-08-27  本文已影响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中可以看到仓库分为

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一致。

上一篇下一篇

猜你喜欢

热点阅读